для петли в колбе питона - PullRequest
0 голосов
/ 09 ноября 2018

у меня есть этот простой цикл 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 голосов
/ 10 ноября 2018

Для этого лучше использовать сам шаблонизатор: http://jinja.pocoo.org/docs/2.10/templates/#block-nesting-and-scope

0 голосов
/ 09 ноября 2018

KeyError обычно ассоциируется с отсутствующим ключом в словаре. Если бы это был я, я бы начал изучать str(row[0]['ergo']). Возможно ли, что один из объектов строки в rv не имеет ключа 'ergo'?

может быть, если cur.execute("SELECT ergo FROM erga") вернет пустой набор запросов?

EDIT:

каждый row в rv является объектом типа dict, и вы ссылаетесь на row[0], но нет ключа 0, замените stock = str(row[0]['ergo']) на stock = str(row['ergo']), и он должен работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...