在烧瓶python中进行循环

时间:2018-11-09 12:25:45

标签: python flask

我在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'}]

我的意思是它不是一个空光标

2 个答案:

答案 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)

为此,您最好使用模板引擎本身: http://jinja.pocoo.org/docs/2.10/templates/#block-nesting-and-scope