An async ORM.
Project description
ORM
The orm
package is an async ORM for Python, with support for Postgres,
MySQL, and SQLite. ORM is built with:
- SQLAlchemy core for query building.
databases
for cross-database async support.typesystem
for data validation.
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.1
Installation
$ 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 that if you are using any synchronous SQLAlchemy functions such as engine.create_all()
or alembic migrations then you still have to install a synchronous DB driver: psycopg2 for PostgreSQL and pymysql for MySQL.
Quickstart
Note: Use ipython
to try this from the console, since it supports await
.
import databases
import orm
import sqlalchemy
database = databases.Database("sqlite:///db.sqlite")
metadata = sqlalchemy.MetaData()
class Note(orm.Model):
__tablename__ = "notes"
__database__ = database
__metadata__ = metadata
id = orm.Integer(primary_key=True)
text = orm.String(max_length=100)
completed = orm.Boolean(default=False)
# Create the database and tables
engine = sqlalchemy.create_engine(str(database.url))
metadata.create_all(engine)
await Note.objects.create(text="Buy the groceries.", completed=False)
note = await Note.objects.get(id=1)
print(note)
# Note(id=1, text="Buy the groceries.", completed=False)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.