Ответ
asyncpg
— это высокопроизводительная библиотека для асинхронной работы с базой данных PostgreSQL в Python, созданная для использования с asyncio
.
Ключевое преимущество: в отличие от традиционных драйверов (например, psycopg2
), asyncpg
не блокирует основной поток выполнения (event loop) во время операций с базой данных. Это критически важно для производительности асинхронных веб-серверов и приложений, так как позволяет обрабатывать другие задачи во время ожидания ответа от БД.
Основные особенности:
- Скорость: Одна из самых быстрых библиотек для работы с PostgreSQL благодаря прямой реализации протокола.
- Надежность: Поддержка подготовленных выражений (prepared statements), транзакций и пулов соединений.
- Современный API: Полностью построен на
async/await
синтаксисе.
Пример использования:
import asyncio
import asyncpg
async def get_user(user_id: int):
# Установка соединения с БД
conn = await asyncpg.connect(user='postgres', database='test_db')
try:
# Выполнение запроса с безопасной подстановкой параметра ($1)
row = await conn.fetchrow(
'SELECT * FROM users WHERE id = $1', user_id
)
if row:
print(dict(row))
finally:
# Гарантированное закрытие соединения
await conn.close()
asyncio.run(get_user(1))
Основное ограничение: asyncpg
работает исключительно с PostgreSQL.