DogAcademyGame/database/db_session.py
Xatiko 9f5d36d1a1 Исправления:
1. "Пользователь не найден"
+ заполнила таблицы из бд Dogs, Qoestions.
2. Меню паузы
+ оно больше не появляется в главном меню, при выборе собаки и уровня.
3. Окно победы
+ не открывается куча окон, собака не двигается, пока окно победы активно
+ добавлена кнопка "выйти в главное меню"
3. Окно регистрации
+ кнопка "посмотреть пароль"
4. таблица GameSessions
+ сохранение игрового процесса в таблицу GameSessions
+ одинаковые данные переносятся автоматически в таблицу GameSessions
+ собранные косточки и тп заполняют только таблицу GameSessions
5. Окно "Профиль пользователя"
+ нет ошибки открытия окна
+ корректное сохранение игрового процесса (уровни, косточки)
6. Окно "Магазин"
+ не кликабельная
+ кнопка "назад"
- shop_ui.py
7. Окно "База знаний"
+ не кликабельная
+ кнопка "назад"
- knowledge_ui.py
2024-11-29 19:54:28 +03:00

49 lines
No EOL
2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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("Нет активной сессии для закрытия.")