/
pozzi88
/
sqlpy-diplom
Обзор
Документация
Войти
/
pozzi88
/
sqlpy-diplom
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
data/models.py
90 строк
3 KB
pozzi88
initial
13 июл 2025, 13:42
13 июл 2025, 13:42
1981fb0
Код
Авторство
О чём код?
from sqlalchemy import ( Column, ForeignKey, Integer, BigInteger, MetaData, String, UniqueConstraint, Index, func, ) from sqlalchemy.orm import declarative_base, relationship metadata = MetaData(schema="englishcard") Base = declarative_base(metadata=metadata) class User(Base): __tablename__ = "users" id = Column(BigInteger, primary_key=True) name = Column(String(100), nullable=False) score = Column(Integer, nullable=False, server_default="0") english_words = relationship( "EnglishWord", back_populates="creator", cascade="all, delete-orphan" ) russian_words = relationship( "RussianWord", back_populates="creator", cascade="all, delete-orphan" ) class EnglishWord(Base): __tablename__ = "english_words" id = Column(Integer, primary_key=True) created_by = Column( BigInteger, ForeignKey("users.id", ondelete="CASCADE"), nullable=False ) word = Column(String(100), nullable=False) creator = relationship("User", back_populates="english_words") translations = relationship( "RelatedWord", back_populates="english_word", cascade="all, delete-orphan" ) Index("uq_english_word_lower", func.lower(EnglishWord.word), unique=True) Index("ix_english_word", EnglishWord.word) class RussianWord(Base): __tablename__ = "russian_words" id = Column(Integer, primary_key=True) created_by = Column( BigInteger, ForeignKey("users.id", ondelete="CASCADE"), nullable=False ) word = Column(String(100), nullable=False) creator = relationship("User", back_populates="russian_words") translations = relationship( "RelatedWord", back_populates="russian_word", cascade="all, delete-orphan" ) Index("uq_russian_word_lower", func.lower(RussianWord.word), unique=True) Index("ix_russian_word", RussianWord.word) class RelatedWord(Base): __tablename__ = "related_words" __table_args__ = ( UniqueConstraint("russianword_id", "englishword_id", name="uq_related_pair"), ) id = Column(Integer, primary_key=True) russianword_id = Column( Integer, ForeignKey("russian_words.id", ondelete="CASCADE"), nullable=False, ) englishword_id = Column( Integer, ForeignKey("english_words.id", ondelete="CASCADE"), nullable=False, ) russian_word = relationship("RussianWord", back_populates="translations") english_word = relationship("EnglishWord", back_populates="translations")