Skip to main content

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 - слой доступа к PostgreSQL
  • PGPoolManager - менеджер пулов соединений

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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

adc_aiopg-0.1.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

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

Hashes for adc_aiopg-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bf634b5320a0550afc9df2719dd0d9af6371a28437ac84e631c3a10a3c8b562a
MD5 64c2a15bf8cf23ac5df75b269ab5d35b
BLAKE2b-256 57fbb9f91f3107585e93f75d940b787fd01a32cff7f9df3d27db2d8cf4d43c90

See more details on using hashes here.

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

Hashes for adc_aiopg-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b6552298b40a08bc70efbb1068e4c24ed73078bab3688ee975d22eb608950f6
MD5 730bb554e368be7ff9a304245a49df69
BLAKE2b-256 24cd7607261a57ae7ff90bd56325ba8a69763874653bfd458d17c43e4b2fc538

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page