#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. Отлично — если это работает, пожалуйста, примите ответ (и, возможно, поддержите его).