Skip to content


Build Status Coverage Package version

The orm package is an async ORM for Python, with support for Postgres, MySQL, and SQLite. ORM is built with:

Because ORM is built on SQLAlchemy core, you can use Alembic to provide database migrations.

ORM is still under development: We recommend pinning any dependencies with orm~=0.2


$ pip install orm

You can install the required database drivers with:

$ pip install orm[postgresql]
$ pip install orm[mysql]
$ pip install orm[sqlite]

Driver support is provided using one of asyncpg, aiomysql, or aiosqlite.


Note: Use ipython to try this from the console, since it supports await.

import databases
import orm

database = databases.Database("sqlite:///db.sqlite")
models = orm.ModelRegistry(database=database)

class Note(orm.Model):
    tablename = "notes"
    registry = models
    fields = {
        "id": orm.Integer(primary_key=True),
        "text": orm.String(max_length=100),
        "completed": orm.Boolean(default=False),

# Create the database and tables
await models.create_all()

await Note.objects.create(text="Buy the groceries.", completed=False)

note = await Note.objects.get(id=1)
# Note(id=1)