Как я могу запросить взаимосвязь нескольких таблиц в SQLAlchemy?

#python #sqlalchemy

#питон #sqlalchemy

Вопрос:

У меня есть эта таблица с несколькими связями таблиц

  class _FoodsInStock(Base):  __tablename__ = 'FoodsInStock'   date = Column(String, primary_key=True)   breakfasts = relationship('_BreakfastsInStock')  lunch = relationship('_LunchInStock')  snacks = relationship('_SnacksInStock')  cereals = relationship('_CerealsInStock')  fruits = relationship('_FruitsInStock')  cookies = relationship('_CookiesInStock')  chocolates = relationship('_ChocolatesInStock')  others = relationship('_OtherFoodsInStock')    

Я пытаюсь получить конкретную таблицу, связанную с _FoodsInStock таблицей

Я знаю, что могу сделать что-то такое простое, как это:

  table = _FoodInStock.query.get(id).breakfasts   

Это отлично работает, но мне нужно связать таблицу в зависимости от некоторых входных данных, и для этого мне потребуется написать эту строку за строкой

Есть ли какой-либо способ сделать что-то, чтобы таблицы были связаны в зависимости от входных данных? что-то вроде в словаре:

  tables = ['breakfasts', 'lunch', 'snacks', 'cereals', 'fruits', 'cookies', 'chocolates', 'others']  for table in tables:   q = _FoodInStock.query.get(id)[table]   

Спасибо!

Ответ №1:

Поскольку это атрибуты, вы должны быть в состоянии достичь этого с помощью getattr :

 tables = ['breakfasts', 'lunch', 'snacks', 'cereals', 'fruits', 'cookies', 'chocolates', 'others']  for table in tables:  q = getattr(_FoodInStock.query.get(id), table)  

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

1. это работает, спасибо!

2. Отлично — если это работает, пожалуйста, примите ответ (и, возможно, поддержите его).