Asynchronous interface for peewee ORM powered by asyncio.
Overview
- Requires Python 3.10+
- Has support for PostgreSQL via aiopg and psycopg3
- Has support for MySQL via aiomysql
- Has support for Sqlite via aiosqlite
- Asynchronous analogues of peewee sync methods with prefix aio_
- Drop-in replacement for sync code, sync will remain sync
- Most basic operations are supported
- Transactions support is present
The complete documentation:
http://peewee-async-lib.readthedocs.io
Install
Install with pip for PostgreSQL aiopg backend:
pip install peewee-async[postgresql]
or for PostgreSQL psycopg3 backend:
pip install peewee-async[psycopg]
or for MySQL:
pip install peewee-async[mysql]
or for Sqlite:
pip install peewee-async[sqlite]
Quickstart
Create 'test' PostgreSQL database for running this snippet:
createdb -E utf-8 test
import asyncio import peewee import peewee_async # Nothing special, just define model and database: database = peewee_async.PooledPostgresqlDatabase( database="db_name", user="user", host="127.0.0.1", port="5432", password="password", ) class TestModel(peewee_async.AioModel): text = peewee.CharField() class Meta: database = database # Look, sync code is working! TestModel.create_table(True) TestModel.create(text="Yo, I can do it sync!") database.close() # No need for sync anymore! database.set_allow_sync(False) async def handler(): await TestModel.aio_create(text="Not bad. Watch this, I'm async!") all_objects = await TestModel.select().aio_execute() for obj in all_objects: print(obj.text) loop = asyncio.get_event_loop() loop.run_until_complete(handler()) loop.close() # Clean up, can do it sync again: with database.allow_sync(): TestModel.drop_table(True) # Expected output: # Yo, I can do it sync! # Not bad. Watch this, I'm async!
More examples
Check the ./examples directory for more.
Documentation
http://peewee-async-lib.readthedocs.io
http://peewee-async.readthedocs.io - DEPRECATED
Developing
Install dependencies using pip:
pip install -e .[dev]
Run databases:
docker-compose up -d
Run tests:
pytest tests -v -s
Discuss
You are welcome to add discussion topics or bug reports to tracker on GitHub: https://github.com/05bit/peewee-async/issues
License
Copyright (c) 2014, Alexey Kinev rudy@05bit.com
Licensed under The MIT License (MIT), see LICENSE file for more details.