【问题标题】:My python flask application returns 400 Bad request我的 python 烧瓶应用程序返回 400 Bad request
【发布时间】:2015-08-06 03:35:03
【问题描述】:

基本上在这个应用程序中,我连接到我的 sql 数据库并尝试检索用户给出的输入结果,这些输入是 AGE、SEX 和 ADMITTING DIAGNOSIS CODE。我能够为 AGE 和 SEX 提供用户输入并获得所需的结果,但是当我为 ADMITTING_DIAGNOSIS_CODE 提供用户输入时,它返回 400 BAD REQUEST。

我的 Python 代码:

import MySQLdb
from flask import Flask, render_template, request
from flask.ext.mysqldb import MySQL

app = Flask(__name__)

db = MySQLdb.connect("127.0.0.1","root","","health" )

@app.route("/", methods = ['GET','POST'])
def home():
    return render_template('home.html')




@app.route("/value", methods = ['GET','POST'])
def Authenticate():
    cursor = db.cursor()
    AGE = request.form['AGE']
    SEX = request.form['SEX']
    ADMITTING_DIAGNOSIS_CODE = request.form['ADMITTING_DIAGNOSIS_CODE']
    #DIAGNOSIS_CODE_1= request.args['DIAGNOSIS_CODE_1']

    sql = 'select avg(LENGTH_OF_STAY),avg(TOTAL_CHARGES),(select count(*) from health where AGE = 3 and SEX = 1 and ADMITTING_DIAGNOSIS_CODE = %s and DISCHARGE_STATUS = "A")/(count(*))*100 as alive,(select count(*) from health where AGE = 3 and SEX = 1 and ADMITTING_DIAGNOSIS_CODE = 5849 and DISCHARGE_STATUS = "B")/(count(*))*100 as dead from health where AGE = 3 and SEX = 1 and ADMITTING_DIAGNOSIS_CODE = 5849'

    entries = []
    cursor.execute(sql,(ADMITTING_DIAGNOSIS_CODE))

    # Fetch all the rows in a list of lists.
    results = cursor.fetchall()
    for row in results:
        entries.append(dict([('avg(LENGTH_OF_STAY)',row[0]),
                             ('avg(TOTAL_CHARGES)',row[1]),
                             ('dead',row[3]),
                             ('alive',row[2])

                             ]))

    return render_template('show_entries.html', entries=entries)

if __name__ == "__main__":
    app.debug = True
    app.run()

我的 HTML 代码:

**

> <form action="/value" method="post" enctype ="multipart/form-data">
> <div>Enter the Age <input type="text" name="AGE" style="border: 1px
> solid black"></div> <div>Enter the Sex <input type="text" name="SEX"
> style="border: 1px solid black"></div> <div>Enter the code <input
> type="text" name="ADMITTING_DIAGNOSIS_CODE" style="border: 1px solid
> black"></div> <div><input type="submit" value=" GO"></div> </form>

**

请帮帮我。

【问题讨论】:

  • 你能粘贴 urlencoded POST 吗?如果它不是现成的,您可能可以从您使用的任何浏览器中的“开发人员工具”之类的东西中获得它。通常类似于该视图中的“网络”标签。
  • 我无法理解你在问什么。你到底需要什么?
  • 我在询问发送到服务器的实际 POST 数据,但我很确定这不是必需的。
  • 对于这类事情,检查日志以了解导致 400 错误的原因非常有帮助,顺便说一句。服务器上的某处应该有一个堆栈跟踪。添加逗号有帮助吗?

标签: python html sql flask


【解决方案1】:

这一行

cursor.execute(sql,(ADMITTING_DIAGNOSIS_CODE))

应该是

cursor.execute(sql,(ADMITTING_DIAGNOSIS_CODE,))

不同之处在于 (x) 等于 x 而 (x,) 等于包含第一个参数 x 的单值元组。

【讨论】:

  • 现在我尝试将所有三个输入作为 cursor.execute(sql,(AGE,SEX,ADMITTING_DIAGNOSIS_CODE,AGE,SEX,ADMITTING_DIAGNOSIS_CODE,AGE,SEX,ADMITTING_DIAGNOSIS_CODE,)) 但这返回 None .
  • 好的。不过,这并不是一段真正可用的代码,返回 None 可能是正确的。此外,鉴于您的措辞,听起来我的回答对您有用。由于这似乎是一个新问题,如果此答案对您有用,也许您应该针对您现在遇到的问题提出一个新问题。
  • 我现在发现您建议的解决方案清除了错误,但它不返回任何结果,而是不返回任何结果。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2020-01-25
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多