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))


  • 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.

Files for aioorm, version 0.1.6
Filename, size File type Python version Upload date Hashes
Filename, size aioorm-0.1.6-py3-none-any.whl (27.4 kB) File type Wheel Python version 3.6 Upload date Hashes View
Filename, size aioorm-0.1.6.tar.gz (31.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page