/
AndreySme
/
TelegramBot
Обзор
Документация
Войти
/
AndreySme
/
TelegramBot
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
databases/database.py
67 строк
3 KB
Andrey
Add files
11 мар 2024, 23:28
11 мар 2024, 23:28
e11f696
Код
Авторство
О чём код?
import aiosqlite DB_NAME = 'quiz_bot.db' async def create_table(): # Создаем соединение с базой данных (если она не существует, то она будет создана) async with aiosqlite.connect(DB_NAME) as db: # Выполняем SQL-запрос к базе данных await db.execute( '''CREATE TABLE IF NOT EXISTS quiz_state (user_id INTEGER PRIMARY KEY, user_name CHAR, question_index INTEGER, number_correct INTEGER)''') # Сохраняем изменения await db.commit() async def update_quiz_index(user_id, user_name, index, count): # Создаем соединение с базой данных (если она не существует, она будет создана) async with aiosqlite.connect(DB_NAME) as db: # Вставляем новую запись или заменяем ее, если с данным user_id уже существует await db.execute('INSERT OR REPLACE INTO quiz_state (user_id, user_name, question_index, number_correct) VALUES (?, ?, ?, ?)', (user_id, user_name, index, count)) # Сохраняем изменения await db.commit() async def get_quiz_index(user_id): # Подключаемся к базе данных async with aiosqlite.connect(DB_NAME) as db: # Получаем запись для заданного пользователя async with db.execute('SELECT question_index FROM quiz_state WHERE user_id = (?)', (user_id,)) as cursor: # Возвращаем результат results = await cursor.fetchone() if results is not None: return results[0] else: return 0 async def get_user_name(user_id): # Подключаемся к базе данных async with aiosqlite.connect(DB_NAME) as db: # Получаем запись для заданного пользователя async with db.execute('SELECT user_name FROM quiz_state WHERE user_id = (?)', (user_id,)) as cursor: # Возвращаем результат results = await cursor.fetchone() if results is not None: return results[0] else: return 0 async def get_number_correct_answers(user_id): # Подключаемся к базе данных async with aiosqlite.connect(DB_NAME) as db: # Получаем запись для заданного пользователя async with db.execute('SELECT number_correct FROM quiz_state WHERE user_id = (?)', (user_id,)) as cursor: # Возвращаем результат results = await cursor.fetchone() if results is not None: return results[0] else: return 0 async def get_results(): async with aiosqlite.connect(DB_NAME) as db: async with db.execute('SELECT user_name, number_correct FROM quiz_state') as cursor: results = await cursor.fetchall() return results