ConnectKit-Database

Wrapper for connection to database


Keywords
connectkit, database, postgres, postgresql, mysql, sqlite3, sqlite, mariadb, async, asyncio, sqlalchemy
License
Other
Install
pip install ConnectKit-Database==1.3.2

Documentation

ConnectKit Database [en|ru]


ConnectKit Database is a wrapper under SQLAlchemy with some utils.

Include pydantic settings, custom json serializer, template code.

Installation


Three types of connectors are supported:

-[x] PostgreSQL (sync/async) -[x] MySQL (MariaDB) (sync/async) -[x] Sqlite3 (sync/async)

By default, the DB connector package is not installed, extensions are specified for installation.

To install sync versions:

pip install ConnectKit-Database[postgresql]  # Установка ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° PostgreSQL
pip install ConnectKit-Database[mysql]       # Установка ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° MySQL/MariaDB
pip install ConnectKit-Database[all]         # Установка всСх sync ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

To install async versions:

pip install ConnectKit-Database[asyncpg]        # Установка ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° PostgreSQL
pip install ConnectKit-Database[aiomysql]       # Установка ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° MySQL/MariaDB
pip install ConnectKit-Database[aiosqlite]      # Установка ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€Π° Sqlite3
pip install ConnectKit-Database[asyncall]       # Установка всСх async ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

Usage


Environment variables are used for connection by default. Variables are extracted from the environment:

DB_ADDR=  # Address for default connection to postgres or mysql(mariadb) (default: None)
DB_PORT=5432  # Port for default connection to postgres or mysql(mariadb)
DB_ADAPTER=postgresql  # Select default connection dialect (from postgresql, mysql and sqlite)
DB_USERNAME=postgres  # Username for default connection postgres or mysql(mariadb)
DB_PASSWORD=  # Username for default connection postgres or mysql(mariadb) (default: None)
DB_NAME=postgres  # Database for postgres or mysql(mariadb), filepath for sqlite
DB_POOL_TIMEOUT=1  # Global pool timeout for creating new session to DB
DB_ECHO: bool = False  # Log all sql statements (for debug purposes)

These variables can be overridden:

from database.settings import settings

settings.DB_ECHO = False

!! Attention !! After creating a default connection, changing the settings settings for it is ignored.

To open a connection, the Database and AsyncDatabase context managers are used:

from database import Database, AsyncDatabase, AsyncSession

with Database() as db:
    db.execute(...)

async with AsyncDatabase() as db:
    await db.execute(...)


# For FastAPI:

async def db_dependency() -> AsyncSession:
    async with AsyncDatabase() as db:
        yield await db.execute(...)

The default Base can be used to create models:

from database import Base
from sqlalchemy.orm import Mapped


class Model(Base):
    id: Mapped[int]

To initialize ORM models via Base for default connection:

from database import init_default_base, async_init_default_base
from database import Base

init_default_base(Base.metadata)

await async_init_default_base(Base.metadata)

License


ConnectKit Database is MIT License.