Skip to main content

a simple orm suport asyncio,fork of aiopeewee

Project description

Asyncio interface for peewee modeled after torpeewee


  • support mysql and postgresql

  • database factory using database URL

  • use peewee’s fields

  • ManyToManyField support

  • Shortcuts support

  • csv dump /load support

  • can use playhose.postgres_ext.JSONField


  • python -m pip install aioorm

Example: GRUD

from aioorm import AioModel, AioMySQLDatabase
from peewee import CharField, TextField, DateTimeField
from peewee import ForeignKeyField, PrimaryKeyField

db = AioMySQLDatabase('test', host='', port=3306,
                     user='root', password='')

class User(AioModel):
    username = CharField()

    class Meta:
        database = db

class Blog(AioModel):
    user = ForeignKeyField(User)
    title = CharField(max_length=25)
    content = TextField(default='')
    pub_date = DateTimeField(null=True)
    pk = PrimaryKeyField()

    class Meta:
        database = db

# create connection pool
await db.connect(loop)

# count

# async iteration on select query
async for user in

# fetch all records as a list from a query in one pass
users = await

# insert
user = await User.create(username='kszucs')

# modify
user.username = 'krisztian'

# async iteration on blog set
[b.title async for b in user.blog_set.order_by(Blog.title)]

# close connection pool
await db.close()

# see more in the tests

Example: Many to many

Note that AioManyToManyField must be used instead of ManyToMany.

from aioorm import AioManyToManyField

class User(AioModel):
    username = CharField(unique=True)

    class Meta:
        database = db

class Note(AioModel):
    text = TextField()
    users = AioManyToManyField(User)

    class Meta:
        database = db

NoteUserThrough = Note.users.get_through_model()

async for user in note.users:
    # do something with the users

Currently the only limitation I’m aware of immidiate setting of instance relation must be replaced with a method call:

# original, which is not supported
charlie.notes = [n2, n3]

# use instead
await charlie.notes.set([n2, n3])


Converting to dict requires the asyncified version of model_to_dict

from aioorm import model_to_dict

serialized = await model_to_dict(user)

Dump to csv

tables can be dump to a csv file.

from aioorm.utils import aiodump_csv
query =
await aiodump_csv(query,str(filepath))


Documentation on Readthedocs.


  • async dataset support

  • more test


  • untested transactions

  • only support mysql and postgresql

Bug fix

  • fixed get and get_or_create ‘s bug

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioorm-0.1.6.tar.gz (31.9 kB view hashes)

Uploaded source

Built Distribution

aioorm-0.1.6-py3-none-any.whl (27.4 kB view hashes)

Uploaded 3 6

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page