<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 %
【讨论】:
除此之外还有其他使用直接索引的选项:<li><h2> order[0], order[1], order[2] </h2>
?我问的原因是因为它给了我一个奇怪的输出:(1, u'JKL', u'Chilli Peppers')
你在那里使用了一个元组。使用单独的插值, order[0] order[1]
等。以上是关于<sqlite3.Row object at 0x1017fe3f0> 而不是数据库内容的主要内容,如果未能解决你的问题,请参考以下文章