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 and 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 with a subset of drivers (connectors) for accessing different databases and data sources for data interaction. The main goal of AsyncDB is to use 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 and pymongo)
  • SQLAlchemy (requires sqlalchemy async (+3.14))
  • Oracle (requires oracledb)

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)
  • oracle: oracle (oracledb)

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

Uploaded PyPy Windows x86-64

asyncdb-2.9.2-pp39-pypy39_pp73-win_amd64.whl (244.9 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.9.2-cp313-cp313-win_amd64.whl (250.1 kB view details)

Uploaded CPython 3.13 Windows x86-64

asyncdb-2.9.2-cp312-cp312-win_amd64.whl (251.0 kB view details)

Uploaded CPython 3.12 Windows x86-64

asyncdb-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (929.2 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

asyncdb-2.9.2-cp311-cp311-win_amd64.whl (253.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

asyncdb-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (857.6 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asyncdb-2.9.2-cp310-cp310-win_amd64.whl (252.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

asyncdb-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (797.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asyncdb-2.9.2-cp39-cp39-win_amd64.whl (253.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

asyncdb-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (800.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 c403aff5e2c4659ced36542c801474bfc6d53c23a138efd53a0322efee6a5781
MD5 de376ce8dc01248b6a1613ea729ed0c9
BLAKE2b-256 9c0c3d48fe2c55df4c948ff1b3341ac3ee03fcfd695c4c5da13c55f41949d446

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 fab5911ae5097dab8a11f2f7427c5dff8840321191833233a153476fd31fb28c
MD5 321602c15fc0c06953ff589c27912eb6
BLAKE2b-256 1d3bc7496dd70f130250516f228bf3c94513b88390accb4f7a959f4656a6d801

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.9.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 490710d91ab4084f3ca28118233dda9ff9058d2cf2203ee9448d5325110b49b3
MD5 15dcf9e6bc5605e2daf63ab7e7c2ed0c
BLAKE2b-256 9dd7185aa33f48862462aa0f60d51edbb4b4b8627a7c4ab45b4d2004755162b3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.9.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 00ce99734abbb24404119a5a11c1da3697baa3428dc3a8d7cf320588c26ae0c8
MD5 1e40afe52861a23fedeff7e00ecc43b4
BLAKE2b-256 17931b5c13e8ce4415806866faca7c1c7a62790ea8ed8e97cf0a29771d06d984

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9821686cd2dfa5cd990ed2df224e3977150a3736c5628ef237be8041ee205cc1
MD5 eccfe8787cef4f33f2cc91d13f47545f
BLAKE2b-256 6915ee28789b4b94fe4f70b07e6ebe01cb4d201b9218e6308f800c682ec88485

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.9.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3e4fd3019dbb3b34dec5651b23b62392f25f998554f9304d4361f5cf201c9fd4
MD5 a4126aa35097cee2944c6cb3d84793c2
BLAKE2b-256 3edb8d5b7a9a1052d18ad209d88dab415c33c9fac04eb476a3d3d23ee34bba5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c74a65d6378980d2919c33cd1f2334b3b7cbbde56c98331364da6d8cb033b354
MD5 9b8d65555d41072b5ec2bc5751b7b0ab
BLAKE2b-256 a9221a48b5893a1375322a610d5d718e9ed6481d4c9deae9c9f0ee112ffb7624

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.9.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d73a9b8a26939553229bfa24859f54a68afdb2be390d6da27d85a342fc3a6e7c
MD5 d6e272e7d9b71338b45f4cdd09c0bc41
BLAKE2b-256 217271da58c7ee307f2fdb46485b40e5584e9086af77f5b3b2e6af5298dc4bd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b97dc210ac16aaaf7590e64299988c805892befaa7dab020d04c3e1e32b4efcd
MD5 f22202d3f2c487476dfaee20fbcb8ca4
BLAKE2b-256 7cbb449bf338da849ded4731e94a177395b6ffc3524ae19d337ab3ad5ae0cacd

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.9.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ee26f673372439a4a22c05774fae1beb98f0c073fa651f77b984b6822b5dbbee
MD5 11b0ee33194a09f53226ac804ad1cd26
BLAKE2b-256 55a406b151b5eed5ef6e0330b5722383baa0cc9a6b1804af7187d6a5f67adbad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d44a197ca676d00de3b27bcf83daf540a62659c924e3c35a9bc4ddc65595b39
MD5 8327435e2342c9d7ce56b0233a566d5a
BLAKE2b-256 1112342d2ae6823b82bccdbe4561f8b1de5e1a754fb12ed092981a7047533a16

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