Asynchronous interface for peewee ORM powered by asyncio.
Project description
peewee-async
Asynchronous interface for peewee ORM powered by asyncio.
Overview
- Requires Python 3.8+
- Has support for PostgreSQL via aiopg
- Has support for MySQL via aiomysql
- Asynchronous analogues of peewee sync methods with prefix aio_
- Drop-in replacement for sync code, sync will remain sync
- Basic operations are supported
- Transactions support is present, yet not heavily tested
The complete documentation:
http://peewee-async-lib.readthedocs.io
Install
Install with pip
for PostgreSQL:
pip install peewee-async[postgresql]
or for MySQL:
pip install peewee-async[mysql]
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 .[develop]
Or using poetry:
poetry install -E develop
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.
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.
Source Distribution
Built Distribution
Hashes for peewee_async-0.12.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3163c997a621ae59c2e50bdea59bb45ab493005c3e18abfd49cb07580dd26b9e |
|
MD5 | e91bdac6e8e9e3c3067a23e5babfa49a |
|
BLAKE2b-256 | 569529e5d8035caca3518b3004c36abbb4afd8a4eed8be426047380dd5e4d37c |