1. "Пользователь не найден" + заполнила таблицы из бд Dogs, Qoestions. 2. Меню паузы + оно больше не появляется в главном меню, при выборе собаки и уровня. 3. Окно победы + не открывается куча окон, собака не двигается, пока окно победы активно + добавлена кнопка "выйти в главное меню" 3. Окно регистрации + кнопка "посмотреть пароль" 4. таблица GameSessions + сохранение игрового процесса в таблицу GameSessions + одинаковые данные переносятся автоматически в таблицу GameSessions + собранные косточки и тп заполняют только таблицу GameSessions 5. Окно "Профиль пользователя" + нет ошибки открытия окна + корректное сохранение игрового процесса (уровни, косточки) 6. Окно "Магазин" + не кликабельная + кнопка "назад" - shop_ui.py 7. Окно "База знаний" + не кликабельная + кнопка "назад" - knowledge_ui.py
49 lines
No EOL
2 KiB
Python
49 lines
No EOL
2 KiB
Python
from sqlalchemy import create_engine
|
||
from sqlalchemy.orm import sessionmaker
|
||
from config import DATABASE_URL
|
||
from database.models import Base
|
||
import os
|
||
|
||
# Создание движка SQLAlchemy
|
||
engine = create_engine(DATABASE_URL, echo=True)
|
||
|
||
# Создание фабрики сессий
|
||
Session = sessionmaker(bind=engine, autoflush=True)
|
||
|
||
# Переменная для хранения текущей сессии
|
||
current_session = None
|
||
|
||
def create_session():
|
||
"""Создаёт сессию для работы с базой данных."""
|
||
return Session()
|
||
|
||
def init_db(refresh=False):
|
||
"""
|
||
Инициализация базы данных: создание файла и таблиц.
|
||
Если `refresh` равно True, удаляет и пересоздаёт таблицы.
|
||
"""
|
||
global current_session
|
||
if not os.path.exists("database/DogAcademy.db") or refresh:
|
||
if refresh:
|
||
print("Обновление базы данных: удаление старых таблиц...")
|
||
Base.metadata.drop_all(bind=engine) # Удаляем все таблицы
|
||
|
||
print("Создание базы данных и таблиц...")
|
||
Base.metadata.create_all(bind=engine) # Создаём таблицы заново
|
||
else:
|
||
print("База данных уже существует. Обновление не требуется.")
|
||
|
||
# Инициализация сессии при запуске
|
||
current_session = get_session()
|
||
|
||
def get_session():
|
||
"""Возвращает сессию для работы с базой данных."""
|
||
return Session() # Просто возвращаем объект сессии
|
||
|
||
def close_sessions():
|
||
"""Закрытие всех сессий перед выходом из программы."""
|
||
if current_session:
|
||
print("Закрытие сессии...")
|
||
current_session.close()
|
||
else:
|
||
print("Нет активной сессии для закрытия.") |