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.2.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.2.0-py3-none-any.whl
(13.2 kB
view details)
File details
Details for the file adc_aiopg-0.2.0.tar.gz.
File metadata
- Download URL: adc_aiopg-0.2.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 |
6307338144b402c32257a662e6b6f682caed60391a345c010f8d532343bf1048
|
|
| MD5 |
9ba38135265b5395dda4de77f4e8eb02
|
|
| BLAKE2b-256 |
03c9d3e1dcf8e62dff795ae2a72eed4305f1a10a5a4be8471065be36456cf411
|
File details
Details for the file adc_aiopg-0.2.0-py3-none-any.whl.
File metadata
- Download URL: adc_aiopg-0.2.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 |
eeb90df963100e49a84f449afd5b6600a7f80305de65ef7f5f9904b88afcfa8d
|
|
| MD5 |
48146e96009ac3a9945a072248318ff3
|
|
| BLAKE2b-256 |
afccfe6f0f9a715259f74b29a81bc90b6a96ce923277fe8599b7ea7f031dcd96
|