/
valek
/
Telegram-Bot
Обзор
Документация
Войти
/
valek
/
Telegram-Bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
models_bot.py
49 строк
1 KB
valek
create: models_bot.py
18 фев 2026, 16:05
Верифицирован
18 фев 2026, 16:05
9b72d69
Код
Авторство
О чём код?
import sqlalchemy import os import json from sqlalchemy.orm import sessionmaker from dotenv import load_dotenv from sqlalchemy import Column, String, Integer, ForeignKey, BigInteger from sqlalchemy.orm import relationship, declarative_base Base = declarative_base() load_dotenv() DSN = os.getenv('DSN') engine = sqlalchemy.create_engine(DSN) Session = sessionmaker(bind=engine) class Word(Base): __tablename__ = 'words' id = Column(Integer, primary_key=True) english = Column(String, nullable=False) russian = Column(String, nullable=False) class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) telegram_id = Column(BigInteger, unique=True, nullable=False) class UserWord(Base): __tablename__ = 'user_words' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id')) word_id = Column(Integer, ForeignKey('words.id')) user = relationship("User", backref="user_words") word = relationship("Word", backref="user_words") def load_db(): Base.metadata.drop_all(engine) Base.metadata.create_all(engine) with Session() as session: if session.query(Word).count() == 0: with open('data_bot.json', 'r', encoding='utf-8') as f: words = json.load(f) for w in words: session.add(Word(english=w['english'], russian=w['russian'])) session.commit()