Получить максимум подмножества столбцов с именем столбца в SQLAlchemy - PullRequest
0 голосов
/ 26 апреля 2019

Из 21 столбца моего стола я бы хотел получить максимум 20 столбцов для одной строки:

row = session.query(Stats).get(id)
rewards = {}
for c in Stats.__table__.columns:
    if c == 'u_state':
        continue
    rewards[c] = row.getattr(Stats, c)

return max(rewards, key=lambda key: rewards[key])

но это приводит к:

AttributeError: у объекта 'Stats' нет атрибута 'getattr'

Как правильно это сделать?

1 Ответ

1 голос
/ 26 апреля 2019

getattr() - это функция , а не метод в вашем Stats экземпляре. Используйте его для получения определенных имен атрибутов из экземпляра вашей модели:

row = session.query(Stats).get(id)
rewards = {}
for c in Stats.__table__.columns:
    if c == 'u_state':
        continue
    rewards[c] = getattr(row, c)

return max(rewards, key=lambda key: rewards[key])

Обратите внимание, что c это столбец, а не строка. В любом случае, лучше использовать API проверки времени выполнения здесь:

for name in inspect(Stats).columns.keys():
    if name == 'u_state':
        continue
    rewards[name] = getattr(row, name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...