/
Flyer
/
library-api
Обзор
Документация
Войти
/
Flyer
/
library-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
task-5
authors_service/app/database.py
39 строк
2 KB
Alex
Task 3: Add SQLite databases per service
31 май 2026, 17:43
31 май 2026, 17:43
0417f59
Код
Авторство
О чём код?
import sqlite3 import os DB_PATH = os.path.join(os.path.dirname(__file__), "..", "data", "authors.db") def get_connection(): """Создаёт соединение с БД. При необходимости папка data создаётся.""" os.makedirs(os.path.dirname(DB_PATH), exist_ok=True) conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row # чтобы можно было обращаться по имени столбца return conn def init_db(): """Создаёт таблицу и наполняет тестовыми данными, если их ещё нет.""" conn = get_connection() cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS authors ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, birth_year INTEGER ) """) # Проверим, есть ли уже записи cursor.execute("SELECT COUNT(*) FROM authors") if cursor.fetchone()[0] == 0: cursor.execute("INSERT INTO authors (id, name, birth_year) VALUES (1, 'М.А. Булгаков', 1891)") cursor.execute("INSERT INTO authors (id, name, birth_year) VALUES (2, 'Ф.М. Достоевский', 1821)") cursor.execute("INSERT INTO authors (id, name, birth_year) VALUES (3, 'Л.Н. Толстой', 1828)") conn.commit() conn.close() def get_author_by_id(author_id: int) -> dict | None: conn = get_connection() row = conn.execute("SELECT id, name, birth_year FROM authors WHERE id = ?", (author_id,)).fetchone() conn.close() if row: return dict(row) return None