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.8.0-pp310-pypy310_pp73-win_amd64.whl (224.4 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.8.0-pp39-pypy39_pp73-win_amd64.whl (224.4 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.8.0-cp313-cp313-win_amd64.whl (229.5 kB view details)

Uploaded CPython 3.13 Windows x86-64

asyncdb-2.8.0-cp312-cp312-win_amd64.whl (230.4 kB view details)

Uploaded CPython 3.12 Windows x86-64

asyncdb-2.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (908.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

asyncdb-2.8.0-cp311-cp311-win_amd64.whl (232.8 kB view details)

Uploaded CPython 3.11 Windows x86-64

asyncdb-2.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (837.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asyncdb-2.8.0-cp310-cp310-win_amd64.whl (232.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

asyncdb-2.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (777.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asyncdb-2.8.0-cp39-cp39-win_amd64.whl (233.1 kB view details)

Uploaded CPython 3.9 Windows x86-64

asyncdb-2.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (780.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 0cbd189188c2f8473d5b48c1fdf863e9b748f8cb143ca79c47960801afc47e8c
MD5 ada7a00dec5adf0987fa056ba0467d2c
BLAKE2b-256 af61acc35d5b860b9123bf99676ca64d5ad130f795bc2daaa8299a20f498eb89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 33ce43e83906b54ffa81c351cc1b7fec09d6ed8502a7b0d38a0bcb4fd3ddf3bd
MD5 3d78aea26b50ede548732f3241ca4811
BLAKE2b-256 994b26ca104d3f224d94edbcd42e6f6efb8d01e7e7862fd4047b41628670b8c4

See more details on using hashes here.

File details

Details for the file asyncdb-2.8.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: asyncdb-2.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 229.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asyncdb-2.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 627410112b8e2647eee1aed43b54795c07d06dd3da30cc943c19ff1ea8217500
MD5 bb456c07084541ce6761cf3646f53e16
BLAKE2b-256 79d6b1f95b3952fae1cf2843e1bc476a357b90c7756ef432687b7b38c2070519

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncdb-2.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 230.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asyncdb-2.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a7d87aaa6e7c598b397f161abcc04dafeefc8ddf533ebdb6056a77574f3dc725
MD5 c052a19a2e1bcf0453605f51c6426bec
BLAKE2b-256 8f8ba57ede815fb5b15b001658204a059fcddeae809e66552addcbed6cfad381

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62704acd25b9de48923886cb23d83b31df8c52d9a0fbad5274c01884cd924e2b
MD5 2768aea0f86a5c69e57572e60e8b73e4
BLAKE2b-256 4f24036e31a0792b0f120670bd0056d41be93251be10a4b2e56dd5a6dee23cda

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncdb-2.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 232.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asyncdb-2.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dc57acd13c3264e4f1a1ae74753d580993831ba87d73b67d15a960a658d757f3
MD5 b2e2fd113bd1a333fb9baec3bfa8fc7a
BLAKE2b-256 a66a15060a9aa7cbe8bd66826f9c07b1824996b1ab2c415abcfe0b77465caaa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22b6c06ddfe3bf8603090a7f3cabb09f36877df4f9ce97a70cbdb75d21227a1f
MD5 bac1bd0dc668531dd469a5e29ca9011d
BLAKE2b-256 2f653108151dc21d0a45f8414ffe1a4993b4e6d634e91fd45a0e9449827fcdcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncdb-2.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 232.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asyncdb-2.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fe199a7d50dca0ca5c6570c46a6758c9d23802f7f62275998ff97d26ed6d01b6
MD5 66fcaca9a3b6320d89bef75d989a8dc1
BLAKE2b-256 7d686214b33ea85acb49a74cd842f26f07edd9ece8c6f66f4db1fd22a8b7911d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8dc502d49e11539988f0253fa983b9644f7c1bf89c1033c3a6dbb8bcf44abd33
MD5 04580b45be3434523252a58e3a520b3c
BLAKE2b-256 786d9b7e1983cbb400bd509ec39b5bdac0560b8b98d86416667459f618b9f0e4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asyncdb-2.8.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 233.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for asyncdb-2.8.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 31ca8c684f45c1a578efef66574b4349bf2eb2d6b199145066aa95e4280ad9ee
MD5 3e885a190165e0c3c36be45b989c3f40
BLAKE2b-256 339df45fe7ae6daf0ee3662f855828da38590fb348dfc458a211e1f45ccc33b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a94dddb8256aa20585612ca5924cf6763475643c28338376bb1ca5da74621915
MD5 de521b50e2add396262f50a61fec6825
BLAKE2b-256 8f435a88a4a3daf5fbb0c73cb6d2cff4170202944f4a0cedc87c193ad8c8109f

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