У меня есть два запроса в Peewee, первый возвращает таблицу пожертвований, соответствующих минимальным и максимальным значениям, а затем умножается на коэффициент.Другой возвращает все пожертвования за пределами минимального / максимального диапазона.После того, как они запустились, я использовал оператор UNION ALL, чтобы получить комбинированный набор результатов:
database.execute_sql('PRAGMA foreign_keys = ON;')
with database.transaction():
# part multiplied by factor
query1 = (Donation
.select(Donation.donor.alias('donor'),
fn.SUM((Donation.amount)*factor).alias('total'))
.where(
(Donation.amount > min_donation) &
(Donation.amount < max_donation)
)
.group_by(Donation.donor)
)
query2 = (Donation
.select(Donation.donor.alias('donor'),
(fn.SUM(Donation.amount)).alias('total'))
.where(
#(Donation.amount <= min_donation) &
(Donation.amount >= max_donation)
)
.group_by(Donation.donor)
)
query = ((query1 + query2)
.select(
SQL('donor'),
fn.SUM(SQL('total'))
)
.group_by(SQL('donor'))
.order_by(SQL('donor'))
)
При кодировании сейчас жалуется, что я не могу выбрать в комбинированном запросе:
Traceback (most recent call last):
File "run_mailroom_db.py", line 350, in project
for i in query:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/peewee.py", line 1611, in __iter__
self._ensure_execution()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/peewee.py", line 1607, in _ensure_execution
raise ValueError('Query has not been executed.')
Теперь у меня вопрос, есть ли способ извлечь отдельные столбцы из комбинированных запросов и сделать что-то вроде возврата СУММЫ сгруппированных значений, как если бы вы работали с таблицей БД?