Skip to main content

Tools to make Peewee work when using Asyncio

Project description

aio-peewee – Use Peewee with async framework

Tests Status PYPI Version

The library doesn’t make peewee work async, but allows you to use Peewee with your asyncio based libraries correctly.

Features

  • Tasks Safety. The library tracks of the connection state using asyncio.Task-local storage, making the Peewee Database object safe to use with multiple tasks inside a loop.

  • Async support for connections. Connect to database asyncroniously

  • Async support for Peewee Connections Pool

Requirements

  • python >= 3.8

Installation

aio-peewee should be installed using pip:

pip install aio-peewee

QuickStart

from aiopeewee import db_url

db = db_url.connect('postgres+async://locahost:5432/database')

async def main(id=1):
    async with db:
        item = Model.get(Model.id == 1)

    return item.name

Usage

Initialization

from aiopeewee import PostgresqlDatabaseAsync, SqliteDatabaseAsync, MySQLDatabaseAsync, CockroachDatabaseAsync

 db = MySQLDatabase('my_app', user='app', password='db_password', host='10.1.0.8', port=3306)

Async Connect/Close

# Manual
async def main():
     await db.connect_async()
     # ...
     await db.close_async()

 # Context manager
async def main():
     async with db:
         # ...

Connection Pooling

from aiopeewee import PooledPostgresqlDatabaseAsync, PooledSqliteDatabaseAsync, PooledMySQLDatabaseAsync, PooledCockroachDatabaseAsync

db = PooledPostgresqlDatabase('my_database', max_connections=8, stale_timeout=300, user='postgres')

Database URL

from aiopeewee import db_url

 db0 = db_url.connect('cockroachdb+async://localhost/db', **db_params)
 db1 = db_url.connect('cockroachdb+pool+async://localhost/db', **db_params)
 db2 = db_url.connect('mysql+async://localhost/db', **db_params)
 db3 = db_url.connect('mysql+pool+async://localhost/db', **db_params)
 db4 = db_url.connect('postgres+async://localhost/db', **db_params)
 db5 = db_url.connect('postgres+pool+async://localhost/db', **db_params)
 db6 = db_url.connect('sqlite+async://localhost/db', **db_params)
 db7 = db_url.connect('sqlite+pool+async://localhost/db', **db_params)
 db8 = db_url.connect('sqliteexc+async://localhost/db', **db_params)
 db9 = db_url.connect('sqliteexc+pool+async://localhost/db', **db_params)

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/aio-peewee/issues

Contributing

Development of the project happens at: https://github.com/klen/aio-peewee

License

Licensed under a MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

aio_peewee-0.0.5-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file aio_peewee-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: aio_peewee-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.0

File hashes

Hashes for aio_peewee-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e799279d578fb6c7b51df25d4e0bdb2710d150a9c224212066dded9aeaeb3b8b
MD5 c3e07d328534a828f22d183a50453288
BLAKE2b-256 c7dde1034a024397992057be5adf26f8e076210648a4ce81af1785b08df4891b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page