/
livi
/
gitExample
Обзор
Документация
Войти
/
livi
/
gitExample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
test-branch
src/database/db.py
72 строки
2 KB
Ivan Ivanovski
5 лаба + изменения
15 ноя 2025, 09:07
15 ноя 2025, 09:07
8746420
Код
Авторство
О чём код?
import sqlite3 from pathlib import Path DB_PATH = Path(__file__).parent / "cafe.db" CREATE_SQL = """ PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS Client ( Client_ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Surname TEXT, Budget REAL DEFAULT 0 ); CREATE TABLE IF NOT EXISTS Cook ( Cook_ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Surname TEXT ); CREATE TABLE IF NOT EXISTS Status ( Status_ID INTEGER PRIMARY KEY AUTOINCREMENT, Title TEXT NOT NULL, Comment TEXT ); CREATE TABLE IF NOT EXISTS Dish ( Dish_ID INTEGER PRIMARY KEY AUTOINCREMENT, Title TEXT NOT NULL, Price REAL NOT NULL DEFAULT 0, Quantity INTEGER DEFAULT 0 ); CREATE TABLE IF NOT EXISTS "Order" ( Order_ID INTEGER PRIMARY KEY AUTOINCREMENT, Order_number_ID INTEGER, Client_ID INTEGER NOT NULL, Formation_time TEXT, Status INTEGER, Cook_ID INTEGER, Date_of_formation TEXT, FOREIGN KEY (Client_ID) REFERENCES Client(Client_ID) ON DELETE CASCADE, FOREIGN KEY (Status) REFERENCES Status(Status_ID) ON DELETE SET NULL, FOREIGN KEY (Cook_ID) REFERENCES Cook(Cook_ID) ON DELETE SET NULL ); CREATE TABLE IF NOT EXISTS Order_Dish ( Order_Dish_ID INTEGER PRIMARY KEY AUTOINCREMENT, Order_ID INTEGER NOT NULL, Dish_ID INTEGER NOT NULL, Quantity INTEGER DEFAULT 1, FOREIGN KEY (Order_ID) REFERENCES "Order"(Order_ID) ON DELETE CASCADE, FOREIGN KEY (Dish_ID) REFERENCES Dish(Dish_ID) ON DELETE CASCADE ); """ def get_connection(): conn = sqlite3.connect(str(DB_PATH)) conn.row_factory = sqlite3.Row conn.execute("PRAGMA foreign_keys = ON;") return conn def initialize_database(): DB_PATH.parent.mkdir(parents=True, exist_ok=True) with get_connection() as conn: conn.executescript(CREATE_SQL) conn.commit() if __name__ == "__main__": # Исправил name initialize_database() print(f"Database initialized at {DB_PATH}")