Async Support for various databases
Project description
AIO-Databases
The package gives you asycio support for a range of databases (SQLite, PostgreSQL, MySQL).
Features
- Has no dependencies (except databases drivers)
- Supports asyncio and trio
- Supports aiosqlite, aiomysql, aiopg, asyncpg triopg trio_mysql
- Manage pools of connections
- Manage transactions
Requirements
- python >= 3.7
Installation
aio-databases should be installed using pip:
$ pip install aio-databases
You have to choose and install the required database drivers with:
# To support SQLite
$ pip install aio-databases[aiosqlite] # asyncio
# To support MySQL
$ pip install aio-databases[aiomysql] # asyncio
$ pip install aio-databases[trio_mysql] # trio
# To support PostgreSQL (choose one)
$ pip install aio-databases[aiopg] # asyncio
$ pip install aio-databases[asyncpg] # asyncio
$ pip install aio-databases[triopg] # trio
# To support ODBC (alpha state)
$ pip install aio-databases[aioodbc] # asyncio
Usage
- Init a database
from aio_databases import Database
db = Database('sqlite:///:memory:')
- Prepare the database to work
# Initialize a database's pool
async def my_app_starts():
await db.connect()
# Close the pool
async def my_app_ends():
await db.disconnect()
# As an alternative users are able to use the database
# as an async context manager
async with db:
await my_main_coroutine()
- Run SQL queries
await db.execute('select $1', '1')
await db.executemany('select $1', '1', '2', '3')
records = await db.fetchall('select (2 * $1) res', 2)
assert records == [(4,)]
record = await db.fetchone('select (2 * $1) res', 2)
assert record == (4,)
assert record['res'] == 4
result = await db.fetchval('select 2 * $1', 2)
assert result == 4
- Iterate through rows one by one
async for rec in db.iterate('select name from users'):
print(rec)
- Manage connections (please ensure that you have released a connection after acquiring)
# Create a new connection object
conn = db.connection()
# or use the existing which one is binded for the current task
conn = db.connection(False)
# Acquire DB connection
await conn.acquire()
# ...
# Release DB connection
await conn.relese()
# an alternative (acquire/release as an async context)
async with db.connection():
# ...
- Use transactions
async with db.transaction() as trans1:
# do some work ...
async with db.transaction() as trans2:
# do some work ...
await trans2.rollback()
# unnessesary, the transaction will be commited on exit from the
# current context
await trans1.commit()
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/aio-databases/issues
Contributing
Development of the project happens at: https://github.com/klen/aio-databases
License
Licensed under a MIT License
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
aio-databases-0.5.0.tar.gz
(11.3 kB
view details)
Built Distribution
File details
Details for the file aio-databases-0.5.0.tar.gz
.
File metadata
- Download URL: aio-databases-0.5.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f52ba718e5b51ca171a674cfff0139aeb4ef72b9b836b761a93ad4b9bcb3e9b8 |
|
MD5 | 16122c2af8dccd2dd6ce799f4cd97f91 |
|
BLAKE2b-256 | 9a52b989a96b63479213d37b3138f630d824e8c240c2ed5f321533a7c9266f6b |
File details
Details for the file aio_databases-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: aio_databases-0.5.0-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6424bfb1e4fd7aecb9c552f823d073a460d262bc6aab9dc771948f1c678bf0d0 |
|
MD5 | 90480875fdf6e55b2b381f3cc51ab5a0 |
|
BLAKE2b-256 | d8cf6b29eb8efe6cc35b0b5d5f58433fa18383ad72227b66d4702ff9ab7a3038 |