因此,我正在使用以下代码根据烧瓶中的用户输入构建查询:
if empty_indic_form.validate_on_submit():
query='select name, year, value, display_name from literal inner join ent on ent_id=ent.id where display_name in ('
for i in indic_form.indicators.data:
query=query+'\''+i+'\','
query=query[:-1]+') '
query=query+'and name in ('
for c in order_c:
query=query+c+','
query=query[:-1]+')'
data_return=db.engine.execute(query).fetchall()
我已经确认查询看起来像它应该的那样,甚至有一个更早的会话,它正在返回一个我期望的 rowproxy 对象列表。但现在无论我做什么,我都会收到这个错误!
我已将查询设置为模板中的一个变量,因此我可以将其打印出来,这就是我得到的:
select name, year, value, display_name from literal inner join ent on ent_id=ent.id where display_name in ('Energy savings of primary energy (TJ)','Adolescent birth rate (women aged 15-19 years)','Net migration rate','Transmission and distribution losses (%)') and name in ('Burkina Faso', 'Ghana', 'Saudi Arabia', 'Pakistan')
我直接在我的 Postgres DB 上运行它,结果非常好。
在错误转储中,我注意到该data_return=db.engine.execute(query).fetchall()
行正在构建一个空字典作为参数,这当然最终会引发该错误。我可以强迫它不要这样做吗?查询对象看起来像上面那样,现在有什么问题?我是否应该在刷新页面或转到主页时终止 db 会话?