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.2.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.2.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

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

Hashes for adc_aiopg-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6307338144b402c32257a662e6b6f682caed60391a345c010f8d532343bf1048
MD5 9ba38135265b5395dda4de77f4e8eb02
BLAKE2b-256 03c9d3e1dcf8e62dff795ae2a72eed4305f1a10a5a4be8471065be36456cf411

See more details on using hashes here.

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

Hashes for adc_aiopg-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eeb90df963100e49a84f449afd5b6600a7f80305de65ef7f5f9904b88afcfa8d
MD5 48146e96009ac3a9945a072248318ff3
BLAKE2b-256 afccfe6f0f9a715259f74b29a81bc90b6a96ce923277fe8599b7ea7f031dcd96

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