2016-05-12 222 views
1

このエラーメッセージが表示されます。 _queryが1文字の場合にのみ動作します。その他の賢明なスローとエラーメッセージ。私はのフラスコを使用しています。エラー:1318 PROCEDUREの引数の数が正しくありません。 Flask

{ error: "(1318, 'Incorrect number of arguments for PROCEDURE alexspider.SearchStore; expected 1, got 2')" }

MySQLの手順:

DELIMITER $$ 
CREATE PROCEDURE SearchStore(
IN Keyword VARCHAR(50)) 
BEGIN 
SELECT * 
FROM noones 
WHERE name LIKE CONCAT('%', Keyword, '%'); 
END$$ 
DELIMITER ; 

フラスコこの行にapp.py

@app.route('/search', methods=['POST']) 
def search(): 
    try: 
     # Read the posted values from the UI 
     _query = request.form['query'] 

     # Validationg the search Quoey 
     if _query: 
      conn = mysql.connect() 
      cursor = conn.cursor() 
      cursor.callproc('SearchStore', _query) 
      stores = cursor.fetchall() 
      if len(stores) > 0: 
       stores_dict = [] 
       for store in stores: 
        store_dict ={ 
        'name': store[2], 
        'url': store[3], 
        'cashback': store[4]} 
        stores_dict.append(store_dict) 
       return json.dumps(stores_dict) 
      else: 
       return render_template('error.hml', error = 'This is error message') 

    except Exception as e: 
     return json.dumps({'error': str(e)}) 
    finally: 
     cursor.close() 
     conn.close() 
+0

プロシージャの呼び出しステートメントは何ですか? –

+0

'cursor.callproc( 'SearchStore'、_query)' –

+1

プロシージャ内に2つのパラメータを渡していることが明確に示されています。 –

答えて

1

cursor.callproc('SearchStore', _query) 

あなたはリストとして引数を渡す必要があります。

cursor.callproc('SearchStore', [_query,]) 
+0

ありがとうSaurav !!それは実際に動作します :) –

関連する問題