2017-05-03 10 views
0

私はアプリケーションから取得する必要があるMySQLのテーブルを持っています。データに 'null'値が含まれていないと正常に動作しますが、データにnull値が含まれていると検索できません。Python:テーブルにnull値を含んでいるflask request.args.get

@app.route('/ABC/search1', methods=['GET']) 
def ABCsearch1(): 
    name = request.args.get('name',default='',type=str) 
    priceMin = request.args.get('priceMin',default='',type=str) 
    priceMax = request.args.get('priceMax',default='',type=str) 

     limit = request.args.get('limit',default=0,type=int) 
    offSet = request.args.get('offSet',default=0,type=int) 

    query = """ SELECT * FROM KLSE WHERE (Stock LIKE :s0 or Name LIKE :s1 or Number LIKE :s2) 
       AND (Price BETWEEN (IF(:s3='_',-5000,:s4)) AND (IF(:s5='_',5000,:s6))) 
       LIMIT :s95 OFFSET :s96 """ 
    query = text(query) 
    input = {'s0':name+"%",'s1':name+"%",'s2':name+"%",'s3':priceMin,'s4':priceMin,'s5':priceMax,'s6':priceMax, 
       's95':limit,'s96':offSet} 
    try: 
     call = db.session.execute(query,input) 
     f = call.fetchall() 
     col = ['index','Stock','Name','Number','Price','id'] 
     f1 = [OrderedDict(zip(col,t)) for t in f] 
    except Exception: 
     return 'Error' 

    return jsonify({'Stock': f1}) 

例は、証券 'XYZ' は価格3を持っている場合は、 'XYZZは' 3.4での価格であると 'XYZA' はデータベース内の価格nullです。私が 'XY'の名前で服を着ると、 'XYZ'と 'XYZZ'だけが表示されます。 「XYZA」はnullとして表示されません。

価格が「null」であっても、「XY」と一致するものが必要です。表示する必要があります。

答えて

0

NULLnot a valueです。これは値がないため、比較を実行できません。 where句にOR Price is NULLを追加します。デフォルト値を指定する場合は、セレクタ文字列にIFNULL(Price, '$0.00')を追加できます。

関連する問題