数据库查询的结果不会加载到烧瓶模板中

时间:2019-05-11 22:06:33

标签: python database postgresql flask flask-sqlalchemy

我更改了查询数据库的方式,尽管结果很好,但我无法获取信息以显示在模板中。

我尝试以一种更简单的方式重写代码以尝试捕获错误,但没有发现任何错误。我不知道该怎么办。

from flask import render_template
from app import app, db


@app.route("/page")
def page():
    '''
    this is the old way that is useable in the template
    result = Test.query.filter_by(id=12))
    '''


    # test variables
    d = 65465
    s = 'rebrb'


    result = db.engine.execute('SELECT * FROM test WHERE id IN (183, 184, 180, 181, 182, 185, 95, 179)')
    # new way works here but not in the template
    print(result)
    for row in result:
        print(row.content)
    return render_template('page.html', s=s, d=d, result=result, title='Video')





'''
The d and s load but the for loop doesn't do anything 
'''
{{ d }}
{{ s }}
    {% for row in result %}
        {{ row }}
        {{ d }}
    {% endfor %}

显示d和s变量,但是for循环不起作用。

编辑1:在将结果转换为列表之前,我已经取得了一些进展,然后再将其发送到模板,但是我觉得我不必这样做,我仍在寻找一个更好的选择。

编辑2:我发现我也可以通过这种方式进行查询。

result = Test.query.filter(Test.id.in_(183, 184, 180, 181, 182, 185, 95, 179))

哪个效果更好,但我需要结果与列表的顺序相同

1 个答案:

答案 0 :(得分:0)

我尝试更改为的查询可以通过使用

来完成
result = Test.query.filter(Test.id.in_(95, 179, 180, 181, 182, 183, 184, 185))

没有任何其他问题。