Более быстрый / эффективный способ привязки всех?

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

Это то, что у меня есть в настоящее время, если / когда я создаю новую модель, мне нужно пойти и добавить в нее новую строку…. Теперь он становится длиннее, чем хотелось бы, и начинает меня беспокоить.

Я использую более короткий способ, однако, похоже, я не могу его найти. Я пытался реализовать Base.metadata.create_all(engine) , однако мне не удалось заставить его работать самостоятельно.

Любая помощь?

 import pathlib

from sqlalchemy import create_engine
from sqlalchemy.orm import backref, relationship, sessionmaker
from .models import *

path = pathlib.Path(__file__).parent.absolute()
engine = create_engine(f'sqlite:///{path}/data.db')
Session = sessionmaker(bind=engine)
session = Session()

if __name__ == "__main__":
    # order is important
    Guild.__table__.create(bind=engine)
    GuildConfig.__table__.create(bind=engine)

    User.__table__.create(bind=engine)
    Role.__table__.create(bind=engine)
    Command.__table__.create(bind=engine)

    Message.__table__.create(bind=engine)
    Trigger.__table__.create(bind=engine)

    GuildCommand.__table__.create(bind=engine)
    GuildCommandRole.__table__.create(bind=engine)

    UserMute.__table__.create(bind=engine)
    UserKick.__table__.create(bind=engine)
    UserBan.__table__.create(bind=engine)

    Reaction.__table__.create(bind=engine)
    ReactionRole.__table__.create(bind=engine)
  

Комментарии:

1. Что пошло не так create_all() ? Похоже на ситуацию XY.

2. Ситуация с XY? не могли бы вы подробнее остановиться на этом…. Я совершенно новичок в любом языке программирования… Кроме того, я воссоздам проблему, с которой я столкнулся, и добавлю трассировку в следующий комментарий.

3. Я ….. должно быть, делал что-то не так (?) Похоже, я попробовал это снова (с новым обновлением SQLAlchemy), и все это, кажется, работает? Это …. странно

4. XY используется для описания ситуации, когда кто-то думает, что Y является решением для X, и поэтому спрашивает о Y, хотя, возможно, было бы выгоднее спросить о X напрямую.

Ответ №1:

Проблема решена, просто нужно проверить все взаимосвязи и убедиться, что все работает так, как задумано.

Также было выполнено обновление до последней версии SQLAlchemy (1.3.20), и проблема, похоже, решена.