查看功能未返回响应

问题描述 投票:12回答:1

我想向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。我究竟做错了什么?

python sql flask
1个回答
17
投票

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])

或定义模板和return the rendered template

请注意,您确实不希望对username参数使用字符串插值,尤其是在Web应用程序中。改为使用SQL参数:

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

现在,数据库客户端将为您执行引用并防止SQL注入攻击。如果你使用字符串插值,this will happen

(如果这是一个不错的数据库(例如不是MySQL),数据库可以采用现在通用的SQL语句并为其创建查询计划,然后在多次执行该查询时反复重复使用该计划;使用字符串插值' d防止这种情况。)

© www.soinside.com 2019 - 2024. All rights reserved.