Wrapper for connection to database
Project description
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.
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 Distribution
Built Distribution
Hashes for connectkit_database-1.3.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc53e5dae831c10b571e64dd437f53cfc9cbf2c912b7e5ed570bd0f9ae22e90a |
|
MD5 | d0ab58a14ae0939a7137d4899edff059 |
|
BLAKE2b-256 | f8d2a6b3bdfd2675a3006ec601814ed2c576be9ea83de7b5fd305febd3e165af |
Hashes for connectkit_database-1.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7090b2774d4a0a53a8af0372dc36df00d7b694f6cfc7a723c56653a36995b00f |
|
MD5 | e0cb90ee367a1d0a1be9af03ac99d278 |
|
BLAKE2b-256 | fa47c796e4dd259ccf2fdf1a70d35a2fc5bc9088e85004195116df04ebb78306 |