Home
Softono

Peewee Async

Open source MIT Python
764
Stars
98
Forks
10
Issues
22
Watchers
3 months
Last Commit

 About Peewee Async

Asynchronous interface for peewee ORM powered by asyncio

Platforms

Web Self-hosted

Languages

Python

Need Help Installing Peewee Async?

We provide expert installation service for this software. Our team will install, configure, and secure Peewee Async on your server. plans start at just $30.

Peewee Async

View on GitHub

peewee-async

Asynchronous interface for peewee ORM powered by asyncio.

CI workflow PyPi Version Documentation Status

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 [email protected]

Licensed under The MIT License (MIT), see LICENSE file for more details.