SkillAgentSearch skills...

Knackles

Async Python ORM for Postgres

Install / Use

/learn @channelcat/Knackles
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

!!! DISCONTINUED !!!

I'm going to move my efforts to focusing on async peewee

Knackles

Knackles is an async ORM. Knackles is currently under development and this documentation serves as a reference for implementation.

from knackles import Model, CharField, IDField, PostgresDatabase

database = PostgresDatabase(host='postgres', user='pguser', password='moonmoonwhy', database='moon_test')

class User(Model):
    name     = CharField(size=100)
    password = CharField(size=32)
    language = CharField(size=32, default='english')

async def main():
    # Create table
    await User.table.create()

    # Create a user
    user = await User.create(name='kim', password='batterystaplehorse')

    # Create a user another way
    user = User()
    user.name = 'john'
    user.password = 'password1'
    await user.save()

    # Fetch a user
    user = await User.get(name='test')

    # Fetch many users
    users = User.where(language='english')
    async for user in users:
        print(user.name)

    # Update many users
    await User.where(language='english').update(language='turbo_memes')

    # Delete many users
    await User.where(language='english').delete()

    # Atomic
    async with database.atomic():
        await User.create(name='i_wont_exist', password='password2')
        await User.create(name='i_have_no_password')


from asyncio import get_event_loop
loop = get_event_loop()
loop.run_until_complete(main())

Planned Features

  • Atomic Transactions
  • Foreign Keys
  • Many to Many
  • Mysql Support
  • SQLite Support
View on GitHub
GitHub Stars6
CategoryDevelopment
Updated6y ago
Forks0

Languages

Python

Security Score

70/100

Audited on Jul 23, 2019

No findings