Подтвердить что ты не робот

Функция просмотра не возвращала ответ

Я хочу отправить запрос в mysql и получить массив. Но, тем не менее, я делаю это, я не могу заставить его работать. Здесь мой код:

@app.route('/auth',methods=['GET','POST'])
def auth(): 
    username = request.form['username']
    password = request.form['password']

    cur = db.cursor() 
    cur.execute("SELECT * FROM tbl_user WHERE username = '%s' " % username)

    results = cur.fetchall()

    for row in results:
        print row[0]

Он всегда говорит, view function did not return a response. Что я делаю неправильно?

4b9b3361

Ответ 1

Flask выбрасывает это исключение, потому что ваш auth вид ничего не возвращает. Верните ответ из представления auth:

return 'Some response'

Чтобы вернуть результаты MySQL, возможно, объедините строки в одну строку:

cur.execute("SELECT * FROM tbl_user WHERE username = '%s' " % username)
return '\n'.join([', '.join(r) for r in cur])

или определить шаблон и вернуть обработанный шаблон.

Обратите внимание, что вы действительно не хотите использовать интерполяцию строк для параметра username, особенно в веб-приложении. Вместо этого используйте параметры SQL:

cur.execute("SELECT * FROM tbl_user WHERE username = %s", (username,))

Теперь клиент базы данных выполнит кавычки для вас и предотвратит атаки SQL-инъекций. Если вы используете строчную интерполяцию, это произойдет.

(Если это была достойная база данных (например, не MySQL), база данных могла бы взять теперь обобщенный оператор SQL и создать для него план запроса, а затем повторно использовать план снова и снова при выполнении этого запроса несколько раз, используя строку интерполяция, которую вы предотвратили бы.)