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

Uploaded PyPy Windows x86-64

asyncdb-2.7.15-pp39-pypy39_pp73-win_amd64.whl (224.1 kB view details)

Uploaded PyPy Windows x86-64

asyncdb-2.7.15-cp312-cp312-win_amd64.whl (229.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

asyncdb-2.7.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (909.0 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.15-cp311-cp311-win_amd64.whl (232.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

asyncdb-2.7.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (837.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.15-cp310-cp310-win_amd64.whl (232.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

asyncdb-2.7.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (777.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

asyncdb-2.7.15-cp39-cp39-win_amd64.whl (232.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

asyncdb-2.7.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (780.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8655ca298a1bb45e0835c49ab297bfea9573424766280a357d1c73fdfc93d29e
MD5 566e8b2f1bdc90ef67acede801bf7a8e
BLAKE2b-256 330b7166385fe296ccb5d4f7600d5dc3df6ad72ee4e311b5298da6056647cabc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9ba90de7e05d42091f6c7dd40b790a97f4dd9747b03e3c5f72e9361fc505ac48
MD5 8b714dce8b87abd40ec172cf90617d70
BLAKE2b-256 97e280b4dee04e12c181bafe22488c145789b5930bab57f2e12778a5afae9fa1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.7.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 22ad7252cfc33f67c1f8fc07920bd9569343fb2f3e6e7f791164308250fcd076
MD5 ac06a415cd1bd7603d678ea49f730fde
BLAKE2b-256 523119a3525d054d2aab95ab4e40dba85bd471b590400eceb784371e9db6a0e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f436db8cf992c7561def1dc9658a853562fae27dd0ec7c5514bcfd1133afb32b
MD5 ecb2c9349b2d66207609efefdaf65287
BLAKE2b-256 e45d8d325bb55fcf63e14f890910e2aecef0f2c8bb4a099d042d132d466af2b4

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.7.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6b1f71fd712c1bfff9e6ea23bc5d7a531f0a2cf637cbb9c4130dd37c53be32e3
MD5 6ebd700fb6ff283007f737fbf910430e
BLAKE2b-256 60d05c5946bae6527cbbfdb7758e6d38f28c8d20c2e6fca1291ca6d56162575c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 650ac4473ef11084f76ce02eb6fa85fb6412babf06a33341f80febf9419161ee
MD5 cbaf76a0f47d7227bec69072a6252363
BLAKE2b-256 a88ed66c99760b78db18905a5bce041f5429d3830e700c3c2e064379ea6a6fec

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.7.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c00701963200740a3e24e22cdb5d894feefe520c0fd0764b512bc7cc9aef8c7a
MD5 c1a995b23106da3459e880230469c0f5
BLAKE2b-256 8314db90d58ed81958237496d0e512203f1d5b508cc3863bab4308215e193e5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1b5caea3367779ed2669c92bc0eb785ad99568796087fa1c89363a969b2e6dd4
MD5 3355a877424ea785bb0a0783d3ec3865
BLAKE2b-256 0d084ecbf4fe43117871c699ced4e78588c91883ca934c4723610ce584746aae

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for asyncdb-2.7.15-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8024e9c0c70c13b0633df98273fe5a83de761c8fea743f8cc2931de64a4821f2
MD5 a8d558e60506ee31d12e4033a1f3d60b
BLAKE2b-256 7bf2a5c6ebb7f28f013d1ecc96699d7aef00f4fad6cd0db4094c2a5a7c69d8c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for asyncdb-2.7.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c120e472a107b3ad8662cb5d6ccc271d92b1a14d61c1acca898932e7d8fe8ff
MD5 502614591aa86ac8bf712a38446d2d8b
BLAKE2b-256 4fa7820a1999574def61a443b447064642a55a98e4c2dea47214ab666dfbac8b

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