Async PostgreSQL client with connection pooling
Project description
aiopg
Асинхронная библиотека для работы с PostgreSQL, предоставляющая удобный интерфейс для управления подключениями, выполнения запросов и работы с репозиториями.
Возможности
- Пул соединений: Эффективное управление подключениями к PostgreSQL
- Асинхронные операции: Полная поддержка async/await для всех операций с базой данных
- JSON поддержка: Встроенная поддержка JSONB с оптимизированными кодерами
- Временные метки: Автоматическая обработка timestamp и timestamptz
- Репозитории: Готовые абстракции для работы с данными
- Система версионирования: Поддержка версионирования таблиц
- Обработка ошибок: Специализированные исключения для различных сценариев
Установка
pip install aiopg
Быстрый старт
Создание пула соединений
from aiopg import create_db_pool
# Создание пула соединений
pool = create_db_pool(
dsn="postgresql://user:password@localhost/dbname",
min_size=5,
max_size=20
)
Выполнение запросов
from aiopg import compile_query
# Компиляция и выполнение запроса
query = compile_query("SELECT * FROM users WHERE id = $1")
async with pool.acquire() as conn:
result = await conn.fetch(query, user_id)
Работа с репозиториями
from aiopg.repository import PGDataAccessObject, TableDescriptor
# Определение таблицы
users_table = TableDescriptor("users", ["id", "name", "email"])
# Создание DAO
users_dao = PGDataAccessObject(pool, users_table)
# Операции с данными
user = await users_dao.get_by_id(user_id)
users = await users_dao.get_all()
await users_dao.insert({"name": "John", "email": "john@example.com"})
Основные компоненты
Connection Pool
create_db_pool()- создание пула соединений с автоматической инициализацией кодеков
Query Compilation
compile_query()- компиляция SQL запросов для оптимизации
Repository Pattern
PGDataAccessObject- базовый DAO для работы с таблицамиPostgresAccessLayer- слой доступа к PostgreSQLPGPoolManager- менеджер пулов соединений
Version Management
declare_version_table()- создание таблиц для версионирования
Требования
- Python >= 3.8
- PostgreSQL
- asyncpg >= 0.27.0
- psycopg2-binary >= 2.9.0
Лицензия
MIT License - см. файл LICENSE для подробностей.
Разработка
# Клонирование репозитория
git clone https://github.com/ascet-dev/adc-aiopg.git
cd adc-aiopg
# Установка зависимостей для разработки
pip install -e .
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
adc_aiopg-0.1.0.tar.gz
(12.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
adc_aiopg-0.1.0-py3-none-any.whl
(13.2 kB
view details)
File details
Details for the file adc_aiopg-0.1.0.tar.gz.
File metadata
- Download URL: adc_aiopg-0.1.0.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf634b5320a0550afc9df2719dd0d9af6371a28437ac84e631c3a10a3c8b562a
|
|
| MD5 |
64c2a15bf8cf23ac5df75b269ab5d35b
|
|
| BLAKE2b-256 |
57fbb9f91f3107585e93f75d940b787fd01a32cff7f9df3d27db2d8cf4d43c90
|
File details
Details for the file adc_aiopg-0.1.0-py3-none-any.whl.
File metadata
- Download URL: adc_aiopg-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b6552298b40a08bc70efbb1068e4c24ed73078bab3688ee975d22eb608950f6
|
|
| MD5 |
730bb554e368be7ff9a304245a49df69
|
|
| BLAKE2b-256 |
24cd7607261a57ae7ff90bd56325ba8a69763874653bfd458d17c43e4b2fc538
|