Initial commit
This commit is contained in:
commit
83c902d6c3
26 changed files with 531 additions and 0 deletions
BIN
database/DogAcademy.db
Normal file
BIN
database/DogAcademy.db
Normal file
Binary file not shown.
0
database/__init__.py
Normal file
0
database/__init__.py
Normal file
BIN
database/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
database/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
database/__pycache__/db_events.cpython-313.pyc
Normal file
BIN
database/__pycache__/db_events.cpython-313.pyc
Normal file
Binary file not shown.
BIN
database/__pycache__/db_session.cpython-313.pyc
Normal file
BIN
database/__pycache__/db_session.cpython-313.pyc
Normal file
Binary file not shown.
BIN
database/__pycache__/models.cpython-313.pyc
Normal file
BIN
database/__pycache__/models.cpython-313.pyc
Normal file
Binary file not shown.
28
database/db_events.py
Normal file
28
database/db_events.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
from database.db_session import get_session
|
||||
from database.models import Auth
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
|
||||
def create_user(login, password):
|
||||
"""Создание нового пользователя в базе данных."""
|
||||
session = get_session()
|
||||
try:
|
||||
new_user = Auth(login=login, password=password)
|
||||
session.add(new_user)
|
||||
session.commit()
|
||||
except SQLAlchemyError as e:
|
||||
print(f"Ошибка при создании пользователя: {e}")
|
||||
session.rollback()
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
def check_user(login, password):
|
||||
"""Проверка данных пользователя для авторизации."""
|
||||
session = get_session()
|
||||
try:
|
||||
user = session.query(Auth).filter_by(login=login, password=password).first()
|
||||
return user is not None
|
||||
except SQLAlchemyError as e:
|
||||
print(f"Ошибка при проверке пользователя: {e}")
|
||||
return False
|
||||
finally:
|
||||
session.close()
|
||||
24
database/db_session.py
Normal file
24
database/db_session.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# database/db_session.py
|
||||
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)
|
||||
|
||||
def init_db():
|
||||
"""Инициализация базы данных: создание файла и таблиц."""
|
||||
if not os.path.exists("database/DogAcademy.db"):
|
||||
print("База данных не найдена. Создаём новую...")
|
||||
Base.metadata.create_all(bind=engine)
|
||||
else:
|
||||
print("База данных уже существует.")
|
||||
|
||||
def get_session():
|
||||
"""Возвращает сессию для работы с базой данных."""
|
||||
return Session()
|
||||
55
database/models.py
Normal file
55
database/models.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
from sqlalchemy import Column, Integer, String, ForeignKey, Text
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
class Auth(Base):
|
||||
__tablename__ = 'auth'
|
||||
user_id = Column(Integer, primary_key=True)
|
||||
login = Column(String, unique=True, nullable=False)
|
||||
password = Column(String, nullable=False)
|
||||
|
||||
# Связь с таблицей Users
|
||||
user = relationship("Users", back_populates="auth", uselist=False)
|
||||
|
||||
|
||||
class Users(Base):
|
||||
__tablename__ = 'users'
|
||||
user_id = Column(Integer, ForeignKey('auth.user_id'), primary_key=True)
|
||||
dog_id = Column(Integer, ForeignKey('dogs.dog_id'))
|
||||
username = Column(String, nullable=False)
|
||||
level = Column(Integer, default=1)
|
||||
achievement = Column(Text)
|
||||
|
||||
# Связи
|
||||
auth = relationship("Auth", back_populates="user") # Обратная связь с Auth
|
||||
dog = relationship("Dogs", back_populates="users") # Связь с таблицей Dogs
|
||||
|
||||
|
||||
class Dogs(Base):
|
||||
__tablename__ = 'dogs'
|
||||
dog_id = Column(Integer, primary_key=True)
|
||||
breed = Column(String)
|
||||
characteristics = Column(Text)
|
||||
behavior = Column(Text)
|
||||
care_info = Column(Text)
|
||||
admin_comments = Column(Text)
|
||||
|
||||
# Связь с таблицей Users
|
||||
users = relationship("Users", back_populates="dog")
|
||||
# Связь с таблицей Questions
|
||||
questions = relationship("Questions", back_populates="dog")
|
||||
|
||||
|
||||
class Questions(Base):
|
||||
__tablename__ = 'questions'
|
||||
question_id = Column(Integer, primary_key=True)
|
||||
dog_id = Column(Integer, ForeignKey('dogs.dog_id'))
|
||||
question_text = Column(Text, nullable=False)
|
||||
image_url = Column(String)
|
||||
helpful_info = Column(Text)
|
||||
|
||||
# Связь с таблицей Dogs
|
||||
dog = relationship("Dogs", back_populates="questions")
|
||||
Loading…
Add table
Add a link
Reference in a new issue