<位于0x1017fe3f0的<sqlite3.Row对象>,而不是数据库内容

met*_*rsk 4 python sqlite flask

我的模板是这样的:

  {% for order in orders %}
    <li><h2>{{ order}}</h2>
  {% endfor %}
Run Code Online (Sandbox Code Playgroud)

我的路由功能是这样的:

@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)
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 6

您需要行中获取数据:

{% for order in orders %}
  <li><h2>{{ order[0] }}</h2></li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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 %}
Run Code Online (Sandbox Code Playgroud)