/
miilsvkk
/
BookRecSystem
Обзор
Документация
Войти
/
miilsvkk
/
BookRecSystem
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
database.py
85 строк
3 KB
miilsvkk
Финальная версия
17 дек 2025, 09:31
17 дек 2025, 09:31
88fff3d
Код
Авторство
О чём код?
# База для сохранения избранных книг пользователя import sqlite3 from datetime import datetime def init_database(): """Инициализация базы данных""" conn = sqlite3.connect('reading_app.db') cursor = conn.cursor() # Таблица для лайков пользователей cursor.execute(''' CREATE TABLE IF NOT EXISTS user_preferences ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id TEXT DEFAULT 'default_user', book_title TEXT NOT NULL, liked INTEGER DEFAULT 0, created_at TEXT DEFAULT CURRENT_TIMESTAMP, UNIQUE(user_id, book_title) ) ''') # Индексы для быстрого поиска cursor.execute('CREATE INDEX IF NOT EXISTS idx_user_book ON user_preferences (user_id, book_title)') cursor.execute('CREATE INDEX IF NOT EXISTS idx_liked ON user_preferences (liked)') conn.commit() conn.close() def get_liked_books(user_id='default_user'): """Получить список лайкнутых книг пользователя""" conn = sqlite3.connect('reading_app.db') conn.row_factory = sqlite3.Row cursor = conn.cursor() cursor.execute(''' SELECT book_title FROM user_preferences WHERE user_id = ? AND liked = 1 ''', (user_id,)) liked_books = [row['book_title'] for row in cursor.fetchall()] conn.close() return liked_books def toggle_like(user_id, book_title, liked): """Добавить/удалить лайк""" conn = sqlite3.connect('reading_app.db') cursor = conn.cursor() try: cursor.execute(''' INSERT OR REPLACE INTO user_preferences (user_id, book_title, liked) VALUES (?, ?, ?) ''', (user_id, book_title, liked)) conn.commit() return True except Exception as e: print(f"Ошибка при сохранении лайка: {e}") return False finally: conn.close() def get_book_likes(book_title): """Получить количество лайков для книги""" conn = sqlite3.connect('reading_app.db') cursor = conn.cursor() cursor.execute(''' SELECT COUNT(*) as like_count FROM user_preferences WHERE book_title = ? AND liked = 1 ''', (book_title,)) result = cursor.fetchone() conn.close() return result[0] if result else 0 # Инициализируем базу при импорте init_database()