/
lucifer39
/
python_Bot
Обзор
Документация
Войти
/
lucifer39
/
python_Bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
database/up_or_cr.py
46 строк
2 KB
Ilya Kuprin
поменял структуру приложения
08 май 2025, 14:23
08 май 2025, 14:23
0ca2f2f
Код
Авторство
О чём код?
import aiosqlite import logging logger = logging.getLogger(__name__) async def update_or_create_user(db, telegram_id, full_name, username): async with db.cursor() as cursor: try: # Проверяем, существует ли пользователь await cursor.execute('SELECT * FROM users WHERE telegram_id = ?', (telegram_id,)) user = await cursor.fetchone() if user: # Если пользователь существует, обновляем данные logger.info(f'Пользователь {user} найден в БД и будет обновлён') await cursor.execute(''' UPDATE users SET username = ?, full_name = ? WHERE telegram_id = ? ''', (username, full_name, telegram_id)) else: # Если пользователя нет, создаём новую запись logger.info(f'Пользователь {full_name} не найден в БД и будет создан') await cursor.execute(''' INSERT INTO users (telegram_id, username, full_name) VALUES (?, ?, ?) ''', (telegram_id, username, full_name)) await db.commit() # Фиксируем изменения logger.info("Операция с базой данных завершена успешно") except aiosqlite.OperationalError as err: logger.error(f"Ошибка в SQL-запросе: {err}") if db: await db.rollback() # Откатываем изменения в случае ошибки except aiosqlite.DatabaseError as err: logger.error(f"Ошибка базы данных: {err}") if db: await db.rollback() except Exception as err: logger.error(f"Неожиданная ошибка: {err}") if db: await db.rollback()