<sqlite3.Row object at 0x1017fe3f0> 而不是数据库内容

Posted

技术标签:

【中文标题】<sqlite3.Row object at 0x1017fe3f0> 而不是数据库内容【英文标题】:<sqlite3.Row object at 0x1017fe3f0> instead of database contents 【发布时间】:2014-07-14 11:24:36 【问题描述】:

我的模板是这样的:

  % 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】:

您需要行获取数据:

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

【讨论】:

除此之外还有其他使用直接索引的选项:&lt;li&gt;&lt;h2&gt; order[0], order[1], order[2] &lt;/h2&gt;?我问的原因是因为它给了我一个奇怪的输出:(1, u'JKL', u'Chilli Peppers') 你在那里使用了一个元组。使用单独的插值, order[0] order[1] 等。

以上是关于<sqlite3.Row object at 0x1017fe3f0> 而不是数据库内容的主要内容,如果未能解决你的问题,请参考以下文章