GitHub - 05bit/peewee-async: Asynchronous interface for peewee ORM powered by asyncio (original) (raw)

peewee-async

Asynchronous interface for **peewee**ORM powered by asyncio.

CI workflow PyPi Version Documentation Status

Overview

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]

Quickstart

Create 'test' PostgreSQL database for running this snippet:

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:

Run tests:

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.