Skip to main content

Async Support for various databases

Project description

AIO-Databases

The package gives you asycio support for a range of databases (SQLite, PostgreSQL, MySQL).

Tests Status PYPI Version Python Versions

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]

# To support MySQL
$ pip install aio-databases[aiomysql]

# To support PostgreSQL (choose one)
$ pip install aio-databases[aiopg]
$ pip install aio-databases[asyncpg]

Usage

  • Init a database
    from aio_databases import Database

    db = Database('sqlite:///:memory:')
  • Prepare the database to work
    async def my_app_starts():
        # Initialize a database's pool
        await db.connect()

    async def my_app_ends():
        # Close pool/connections
        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
  • Use transactions
    async with db.transaction() as trans1:
        # do some work ...

        async with db.transaction() as trans2:
            # do some work ...
            await trans2.rollback()
  • Manage connections
    await db.connection.acquire()
    # ...
    await db.connection.relese()

    # an alternative
    async with db.connection:
        # ...

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


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.0.19.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

aio_databases-0.0.19-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file aio-databases-0.0.19.tar.gz.

File metadata

  • Download URL: aio-databases-0.0.19.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for aio-databases-0.0.19.tar.gz
Algorithm Hash digest
SHA256 eceb454aa1c743dbbe16ae4dfda4f3f71561987d54f73728f0569954b571a45c
MD5 04fa6d575f1421fc97e4b5efae54a56e
BLAKE2b-256 aec47b5fc8e14c88d96211435996a72c952518117243d48e9cbdc9942ced89bf

See more details on using hashes here.

File details

Details for the file aio_databases-0.0.19-py3-none-any.whl.

File metadata

  • Download URL: aio_databases-0.0.19-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.7.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for aio_databases-0.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 4eb3066a6f485b819a6e2049b936fdba4356e821b1c7c32f2249a7ec19d3a910
MD5 97e3d99fccbee01d2bdf589a0f502cc6
BLAKE2b-256 722d9a834bbf471e9cdfca8ac266662e9e48cd2cbea3c2f9ec9b42816ce54a7d

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