Pythoner
Фотография
✈️Современные приложения требуют высокой производительности и асинхронной обработки данных. Одним из инструментов, который помогает разработчикам Python достигать этих целей, является библиотека aiosqlite. Она позволяет выполнять асинхронные операции с базой данных SQLite, что значительно улучшает отклик приложения и его масштабируемость.
➡️Установка и начальная настройка
Первый шаг в использовании aiosqlite — это установка библиотеки. Это можно сделать с помощью pip:
pip install aiosqlite
💬После установки, можно приступить к настройке подключения к базе данных. Рассмотрим простой пример:
import aiosqlite
import asyncio
async def main():
async with aiosqlite.connect('example.db') as db:
await db.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
await db.commit()
asyncio.run(main())
⬆️В этом примере мы создаем подключение к базе данных example.db и создаем таблицу users, если она еще не существует.
➡️Выполнение асинхронных запросов
Одним из ключевых преимуществ aiosqlite является возможность выполнения асинхронных запросов. Рассмотрим пример добавления и получения данных из таблицы:
async def add_user(db, user_name):
await db.execute('INSERT INTO users (name) VALUES (?)', (user_name,))
await db.commit()
async def get_users(db):
async with db.execute('SELECT * FROM users') as cursor:
async for row in cursor:
print(row)
async def main():
async with aiosqlite.connect('example.db') as db:
await add_user(db, 'Alice')
await add_user(db, 'Bob')
await get_users(db)
asyncio.run(main())
⬆️В этом примере мы добавляем двух пользователей в таблицу users и выводим всех пользователей на экран. Обратите внимание, что все операции с базой данных выполняются асинхронно.
➡️Обработка ошибок и управление транзакциями
Любое взаимодействие с базой данных может сопровождаться ошибками, и важно уметь правильно их обрабатывать. Кроме того, aiosqlite поддерживает работу с транзакциями:
async def main():
async with aiosqlite.connect('example.db') as db:
try:
async with db.execute('BEGIN'):
await db.execute('INSERT INTO users (name) VALUES (?)', ('Charlie',))
# Принудительно вызовем ошибку
raise Exception("Something went wrong")
await db.commit()
except Exception as e:
await db.rollback()
print(f"Transaction failed: {e}")
asyncio.run(main())
⬆️В этом примере мы демонстрируем использование транзакций и обработку ошибок. Если в процессе выполнения транзакции возникает ошибка, изменения автоматически откатываются.
🐍Pythoner
22 · 1.9K ·