Загрузка данных
import sqlite3
def get_connection():
conn = sqlite3.connect("clinic.db")
conn.execute("PRAGMA foreign_keys = ON;")
return conn
def init_db():
conn = get_connection()
cursor = conn.cursor()
cursor.executescript("""
CREATE TABLE IF NOT EXISTS Service (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL
);
CREATE TABLE IF NOT EXISTS Patient (
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
phone TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS Doctor (
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
specialization TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS Cabinet (
id INTEGER PRIMARY KEY AUTOINCREMENT,
room_number TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS Appointment (
id INTEGER PRIMARY KEY AUTOINCREMENT,
patient_id INTEGER NOT NULL,
doctor_id INTEGER NOT NULL,
service_id INTEGER NOT NULL,
cabinet_id INTEGER NOT NULL,
datetime TEXT NOT NULL,
status TEXT NOT NULL,
diagnosis TEXT,
FOREIGN KEY (patient_id) REFERENCES Patient(id) ON DELETE CASCADE,
FOREIGN KEY (doctor_id) REFERENCES Doctor(id) ON DELETE RESTRICT,
FOREIGN KEY (service_id) REFERENCES Service(id) ON DELETE RESTRICT,
FOREIGN KEY (cabinet_id) REFERENCES Cabinet(id) ON DELETE RESTRICT
);
""")
conn.commit()
conn.close()
# 1. CREATE
def add_patient():
first_name = input("Имя пациента: ")
last_name = input("Фамилия пациента: ")
phone = input("Номер телефона: ")
conn = get_connection()
cursor = conn.cursor()
cursor.execute("""
INSERT INTO Patient (first_name, last_name, phone)
VALUES (?, ?, ?)
""", (first_name, last_name, phone))
conn.commit()
print(f"-> Пациент успешно добавлен с ID {cursor.lastrowid}!\n")
conn.close()
# 2. READ (пользователь сам выбирает какую таблицу смотреть)
def show_table_records():
tables = {
"1": "Patient",
"2": "Doctor",
"3": "Service",
"4": "Cabinet",
"5": "Appointment"
}
print("\nКакую таблицу вывести?")
for key, name in tables.items():
print(f"{key}. {name}")
choice = input("Выбери номер: ")
table_name = tables.get(choice)
if not table_name:
print("Неверный выбор таблицы.\n")
return
conn = get_connection()
cursor = conn.cursor()
cursor.execute(f"SELECT * FROM {table_name}")
rows = cursor.fetchall()
# Получаем названия столбцов
columns = [desc[0] for desc in cursor.description]
print(f"\n--- Данные таблицы {table_name} ---")
print(" | ".join(columns))
print("-" * 40)
for row in rows:
print(" | ".join(str(item) for item in row))
print()
conn.close()
# 3. UPDATE (пользователь выбирает ID, поле и новое значение)
def update_patient_field():
patient_id = input("Введи ID пациента для изменения: ")
print("Какое поле обновить?")
print("1. first_name (Имя)")
print("2. last_name (Фамилия)")
print("3. phone (Телефон)")
field_choice = input("Выбери пункт (1-3): ")
field_map = {
"1": "first_name",
"2": "last_name",
"3": "phone"
}
field_name = field_map.get(field_choice)
if not field_name:
print("Неверное поле.\n")
return
new_value = input(f"Введи новое значение для {field_name}: ")
conn = get_connection()
cursor = conn.cursor()
cursor.execute(f"UPDATE Patient SET {field_name} = ? WHERE id = ?", (new_value, patient_id))
conn.commit()
if cursor.rowcount > 0:
print(f"-> Запись #{patient_id} успешно обновлена!\n")
else:
print(f"-> Пациент с ID {patient_id} не найден.\n")
conn.close()
# 4. DELETE (пользователь вводит ID для удаления)
def delete_patient():
patient_id = input("Введи ID пациента, которого нужно удалить: ")
conn = get_connection()
cursor = conn.cursor()
cursor.execute("DELETE FROM Patient WHERE id = ?", (patient_id,))
conn.commit()
if cursor.rowcount > 0:
print(f"-> Пациент #{patient_id} успешно удален!\n")
else:
print(f"-> Пациент с ID {patient_id} не найден.\n")
conn.close()
def main():
init_db()
while True:
print("=== СИСТЕМА УПРАВЛЕНИЯ КЛИНИКОЙ ===")
print("1. Добавить пациента (CREATE)")
print("2. Просмотреть записи в таблице (READ)")
print("3. Изменить данные пациента (UPDATE)")
print("4. Удалить пациента (DELETE)")
print("0. Выход")
action = input("Выберите действие: ")
if action == "1":
add_patient()
elif action == "2":
show_table_records()
elif action == "3":
update_patient_field()
elif action == "4":
delete_patient()
elif action == "0":
print("Работа завершена.")
break
else:
print("Неизвестный пункт, попробуй еще раз.\n")
if __name__ == "__main__":
main()