2015-08-06 2 views
0

В основном в этом приложении я подключаюсь к моей базе данных sql и пытаюсь получить результаты для входов, данных пользователем, которые являются ВОЗРАСТОМ, SEX и ADMITTING DIAGNOSIS CODE. Я могу дать пользователю ввод как для AGE, так и для SEX и получить требуемые результаты, но когда я даю пользователю ввод для ADMITTING_DIAGNOSIS_CODE, он возвращает 400 BAD REQUEST.Приложение для флиса python возвращает 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> 

**

Пожалуйста, помогите мне.

+0

Вы можете вставить urlencoded POST? Если он недоступен, вы можете получить его от чего-то вроде «инструментов разработчика» в любом браузере, который вы используете. Обычно что-то вроде вкладки «сеть» в этом представлении. –

+0

Я не могу понять, что вы просите. Что именно вам нужно? –

+0

Я просил фактические данные POSTED, отправленные на сервер, но я уверен, что это не будет необходимо. –

ответ

0

Эта линия

cursor.execute(sql,(ADMITTING_DIAGNOSIS_CODE)) 

должно быть

cursor.execute(sql,(ADMITTING_DIAGNOSIS_CODE,)) 

Разница в том, что (х) равно х, а (х,) равно единственному значению кортежа, содержащего первый аргумент х ,

+0

Теперь я пытаюсь получить вход для всех трех в качестве cursor.execute (sql, (AGE, SEX, ADMITTING_DIAGNOSIS_CODE, AGE, SEX, ADMITTING_DIAGNOSIS_CODE, AGE, SEX, ADMITTING_DIAGNOSIS_CODE,)), но это возвращает None. –

+0

Хорошо. Это не действительно полезный фрагмент кода, хотя и возвращение Нет может быть правильным. Кроме того, учитывая вашу формулировку, похоже, что мой ответ сработал для вас. Поскольку это, кажется, новый вопрос, если бы этот ответ сработал для вас, возможно, вы должны задать новый вопрос конкретно о проблеме, с которой вы сейчас сталкиваетесь. –

+0

ОК спасибо ... –

Смежные вопросы