显示<sqlite3.Row对象>而不是数据库内容
我的模板是这样的:
{% for order in orders %}
<li><h2>{{ order}}</h2>
{% endfor %}
而我的路由函数是这样的:
@app.route('/order_history')
def orderhistory():
db = get_db()
cur = db.execute('select * from order_items')
orders = cur.fetchall()
return render_template('order_history.html', orders = orders)
有人知道为什么我得到的是行对象的位置,而不是数据库里的内容吗?
1 个回答
10
你需要从这些行中获取数据:
{% for order in orders %}
<li><h2>{{ order[0] }}</h2></li>
{% endfor %}
SQL查询总是以行的形式返回数据,每行包含多个列。上面的内容假设你的SELECT
语句每行只返回了一列数据。
如果你有多列数据,你就需要用直接的索引来访问这些列(比如order[1]
、order[3]
等),或者通过循环遍历这一行来显示所有的列:
{% for order in orders %}
<li><h2>{{ order[0] }}</h2>
{% for column in order %}
{% if not loop.first %}{{ column }}<br />{% endif %}
{% endfor %}
</li>
{% endfor %}