Схематично: у меня есть эти таблицы [столбцы]
Flights [id, date, user_id, club_id, etc]
Clubs [id, etc]
Users [id, name, club_id, etc]
Я могу найти количество рейсов для каждого пользователя, количество рейсов для каждого клуба и т. Д. c.
Сложная задача для меня - найти количество (уникальных) пользователей в каждом клубе, которые отправили рейсы, в базе данных. Я уверен, что отправной точкой является
SELECT flights.club_id, users.name FROM flights
INNER JOIN users ON flights.club_id=users.club_id
, а затем выполните count
для этого.
Но я пытался реализовать вышеупомянутое соединение запросов с функциями sqlalchemy (v1.3.1) и с "текстом", например,
query = db.session.query(Flight,User).from_statement(\
text('''SELECT flights.club_id, users.first_name FROM flights
INNER JOIN users ON flights.club_id=users.club_id '''))
... Я получаю эту ошибку от любого из Метод:
"Could not locate column in row for column 'flights.id'"
Кто-нибудь знает, как это исправить? Я вижу очень мало онлайн об этой ошибке.
Или есть лучший способ получить количество пользователей в каждом клубе, у которых есть полеты в базе данных?
Вот полный трассировка ошибки:
File "/home/bret/pycharm/helpers/pydev/_pydevd_bundle/pydevd_exec.py", line 3, in Exec
exec exp in global_vars, local_vars
File "<input>", line 1, in <module>
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 3186, in all
return list(self)
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 105, in instances
util.raise_from_cause(err)
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 398, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 89, in instances
for row in fetch
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 508, in _instance
tuple([row[column] for column in pk_cols]),
File "/home/bret/.local/share/virtualenvs/skylinesC-0VgGNjgC/local/lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 627, in _key_fallback
% expression._string_or_unprintable(key)
NoSuchColumnError: "Could not locate column in row for column 'flights.id'"