Skip to main content

Library for Asynchronous data source connections Collection of asyncio drivers.

Project description

AsyncDB

AsyncDB is a collection of different Database Drivers using asyncio-based connections, binary-connectors (as asyncpg) but providing an abstraction layer to easily connect to different data sources, a high-level abstraction layer for various non-blocking database connectors, on other blocking connectors (like MS SQL Server) we are using ThreadPoolExecutors to run in a non-blocking manner.

Why AsyncDB?

The finality of AsyncDB is to provide us a subset of drivers (connectors) for accessing different databases and data sources for data interaction. The main goal of AsyncDB is using asyncio-based technologies.

Getting Started

Requirements

Python 3.9+

Installation

$ pip install asyncdb
---> 100%
Successfully installed asyncdb

Can also install only drivers required like:

$ pip install asyncdb[pg] # this install only asyncpg

Or install all supported drivers as:

$ pip install asyncdb[all]

Requirements

Currently AsyncDB supports the following databases:

  • PostgreSQL (supporting two different connectors: asyncpg or aiopg)
  • SQLite (requires aiosqlite)
  • mySQL/MariaDB (requires aiomysql and mysqlclient)
  • ODBC (using aioodbc)
  • JDBC(using JayDeBeApi and JPype)
  • RethinkDB (requires rethinkdb)
  • Redis (requires aioredis)
  • Memcache (requires aiomcache)
  • MS SQL Server (non-asyncio using freeTDS and pymssql)
  • Apache Cassandra (requires official cassandra driver)
  • InfluxDB (using influxdb)
  • CouchBase (using aiocouch)
  • MongoDB (using motor)
  • SQLAlchemy (requires sqlalchemy async (+3.14))

Quick Tutorial

from asyncdb import AsyncDB

db = AsyncDB('pg', dsn='postgres://user:password@localhost:5432/database')

# Or you can also passing a dictionary with parameters like:
params = {
    "user": "user",
    "password": "password",
    "host": "localhost",
    "port": "5432",
    "database": "database",
    "DEBUG": True,
}
db = AsyncDB('pg', params=params)

async with await db.connection() as conn:
    result, error = await conn.query('SELECT * FROM test')

And that's it!, we are using the same methods on all drivers, maintaining a consistent interface between all of them, facilitating the re-use of the same code for different databases.

Every Driver has a simple name to call it:

  • pg: AsyncPG (PostgreSQL)
  • postgres: aiopg (PostgreSQL)
  • mysql: aiomysql (mySQL)
  • influx: influxdb (InfluxDB)
  • redis: redis-py (Redis)
  • mcache: aiomcache (Memcache)
  • odbc: aiodbc (ODBC)

Future work:

  • Prometheus

Output Support

With Output Support results can be returned into a wide-range of variants:

from datamodel import BaseModel

class Point(BaseModel):
    col1: list
    col2: list
    col3: list

db = AsyncDB('pg', dsn='postgres://user:password@localhost:5432/database')
async with await d.connection() as conn:
    # changing output format to Pandas:
    conn.output_format('pandas')  # change output format to pandas
    result, error = await conn.query('SELECT * FROM test')
    conn.output_format('csv')  # change output format to CSV
    result, _ = await conn.query('SELECT TEST')
    conn.output_format('dataclass', model=Point)  # change output format to Dataclass Model
    result, _ = await conn.query('SELECT * FROM test')

Currently AsyncDB supports the following Output Formats:

  • CSV (comma-separated or parametrized)
  • JSON (using orjson)
  • iterable (returns a generator)
  • Recordset (Internal meta-Object for list of Records)
  • Pandas (a pandas Dataframe)
  • Datatable (Dt Dataframe)
  • Dataclass (exporting data to a dataclass with -optionally- passing Dataclass instance)
  • PySpark Dataframe

And others to come:

  • Apache Arrow (using pyarrow)
  • Polars (Using Python polars)
  • Dask Dataframe

Contribution guidelines

Please have a look at the Contribution Guide

  • Writing tests
  • Code review

Who do I talk to?

  • Repo owner or admin
  • Other community or team contact

License

AsyncDB is copyright of Jesus Lara (https://phenobarbital.info) and is licensed under BSD. I am providing code in this repository under an open source licenses, remember, this is my personal repository; the license that you receive is from me and not from my employeer.

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 Distributions

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

Built Distributions

asyncdb-2.7.5-pp310-pypy310_pp73-win_amd64.whl (218.5 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.7.5-pp39-pypy39_pp73-win_amd64.whl (218.6 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.7.5-cp312-cp312-win_amd64.whl (225.7 kB view details)

Uploaded CPython 3.12 Windows x86-64

asyncdb-2.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (904.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.5-cp311-cp311-win_amd64.whl (227.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

asyncdb-2.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (833.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.5-cp310-cp310-win_amd64.whl (227.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

asyncdb-2.7.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (773.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.5-cp39-cp39-win_amd64.whl (227.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

asyncdb-2.7.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (775.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

File details

Details for the file asyncdb-2.7.5-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 4a0e1aa23e2e35ed4abb6c8665149a7123bc75f59c38b0812b473611243f375e
MD5 559f35c153aae29fb9f858e851605090
BLAKE2b-256 8fcb425d1b2498fa2eb1aebc07d6c97fda222a25bf57af935a29dbfdbf7ed6dd

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 4f5f030411a6582010aa14dbf9a31a441e63bb07ce13d83d2f22010100beea7b
MD5 8e44604ea0b93231eb8f5adf4f3ab6f1
BLAKE2b-256 4fc8bee7d081ebba88bd3a3b1579f25630e054d877d9337f83249da53a500511

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: asyncdb-2.7.5-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 225.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for asyncdb-2.7.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 181ae9a5cef4819514e296a45b3646c7a2fb2982a71fb6154920e727e9321b24
MD5 29b55a88c7adf4505dbbd4a28ab6bd21
BLAKE2b-256 4eaebb9fbb4ff057340708afbcb0fd4b6ab39bb9ffad8b88e4c9a442ceac3a6d

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f773d55d5641fc39d97a34f8a89f3c2a02588900d24303971ecf290ff177c0ea
MD5 436e47a07248fa930c8b59739de7c251
BLAKE2b-256 063b941065dae148eee9d809d8445effc099f32a761dbf5b4a383273921364fd

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: asyncdb-2.7.5-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 227.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for asyncdb-2.7.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b55398cc747bcacfc75bc2011ed72bb396fd2737571ed9979a708254e1e6123b
MD5 ac1e533ff263f951060cb8fbeff776e9
BLAKE2b-256 3e43b1698ee72553661bdad681a5cd6f003b84d0016e34eceaec436a6cd15652

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 81e656afef42389dc2d257774a968098f60e403528f6ec30d62d786ac6b0b390
MD5 fb7eb70aebda670c10068ef002a5c472
BLAKE2b-256 4ab9eb4dccca7dc309d7a945b586b50b7bea539f61388a76e2046c73a3aa213c

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: asyncdb-2.7.5-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 227.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for asyncdb-2.7.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 10ef6220f14621aa79aefc2c8690ae25d1c7b9ecab2a1e5c10024f87b7156c7e
MD5 1dae3aa1cc84c2f855af7b878744c54a
BLAKE2b-256 e3ae1cd25ef559e2ba16657e240b5398f36bacffa118ab6605f2a033e560cbe0

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5568deda16258eec36159560b9f9d140f543f9c2c323bfb9fb5afe19a79ed9d3
MD5 63c4cae764bc316623958691b0acb05f
BLAKE2b-256 6cf6b428ccc4e85f828db2c7e48b62e7dad23839556c8d569a856ac61e89c5c0

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: asyncdb-2.7.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 227.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for asyncdb-2.7.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 48f682ff0a18d76f361fb30da19bdd6b8906705228549b47e1a93bffe134db66
MD5 3eba09663f7b353a505494217615fc59
BLAKE2b-256 d84529a5067d4416fc15dc61e3eddf4fa396244807224a453c963ace655f60ad

See more details on using hashes here.

File details

Details for the file asyncdb-2.7.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for asyncdb-2.7.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3661ebbc62998779a74954b65485a557c3364440976cffbcf7a6523f20ed36b
MD5 9326187b0bab9f6e9a3bf182e9962f45
BLAKE2b-256 4558e6c508bca058bd56199986679ea92a936e718ab061a5db6674c9502b31b6

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