我在flask框架中有这个简单的for循环
@app.route('/kde')
def fetch_erga():
cur = mysql.connection.cursor()
cur.execute("SELECT ergo FROM erga")
rv = list(cur.fetchall())
for row in rv:
stock = str(row[0]['ergo'])
tsapr += [(stock)]
return '<h2>' + tsapr + '</h2>'
这会导致Jinja崩溃并在浏览器中产生以下错误: KeyError:0
是键评估错误还是缺少它,还是循环不好? 任何帮助将不胜感激
编辑: 运行此命令时:
@app.route('/kdef')
def fetch_ergas():
cur = mysql.connection.cursor()
cur.execute("SELECT ergo FROM erga")
rv = list(cur.fetchall())
return '<h2>' + str(rv) + '</h2>'
我在浏览器中得到以下结果
[{'ergo': u'52018'}, {'ergo': u'52019'}, {'ergo': u'63096700'}, {'ergo': u'68003400'}, {'ergo': u'68003501'}, {'ergo': u'69003501'}]
我的意思是它不是一个空光标
答案 0 :(得分:1)
KeyError通常与字典中缺少的键相关联。如果是我,我将开始研究str(row[0]['ergo'])
。 rv
中的行对象之一可能没有'ergo'
键吗?
也许cur.execute("SELECT ergo FROM erga")
返回一个空查询集吗?
编辑:
row
中的每个rv
都是dict
类型的对象,并且您引用的是row[0]
,但是没有0
键,请更改{{1} }成为stock = str(row[0]['ergo'])
,它应该可以工作
答案 1 :(得分:1)