首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图函数未返回响应

视图函数未返回响应
EN

Stack Overflow用户
提问于 2013-02-08 18:06:51
回答 1查看 21.2K关注 0票数 12

我想向mysql发送一个查询并获取一个数组。但是不管我怎么做,我都不能让它工作。下面是我的代码:

代码语言:javascript
复制
@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。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-08 18:14:39

Flask抛出此异常是因为您的auth视图没有返回任何内容。从您的auth视图返回响应:

代码语言:javascript
复制
return 'Some response'

要返回MySQL结果,可以将行连接到一个字符串中:

代码语言:javascript
复制
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参数:

代码语言:javascript
复制
cur.execute("SELECT * FROM tbl_user WHERE username = %s", (username,))

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

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

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14770098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档