<sqlite3.row object =“”at =“”0x1017fe3f0 =“”>而不是数据库内容</sqlite3.row>

时间:2014-05-25 16:15:27

标签: python sqlite flask

我的模板是这样的:

  {% 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)

知道为什么我要获取行对象位置而不是db内容吗?

1 个答案:

答案 0 :(得分:5)

您需要从行获取数据

{% 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 %}