2016-09-08 3 views
0

こんにちは、私はstackoverflowの新しいメンバーです。私は現在、フラスコ内でsqlAlchemyを使用しています。検索URLに指定された文字列の一致するカテゴリを取得しようとしています。検索のURLのコードは以下の通りである:sqlAlchemyで "Like"演算子を使用する方法

@productapi.route("/search/category", methods=["GET"]) 
def search_category(): 
    category_param_value = request.args.get('querystr', None) 
    print(category_param_value) 
    if category_param_value is None: 
     return jsonify(message='Which category you want to search????'), 400 
    try: 
     category = Category.query.filter_by(
      title=Category.title.like("category_param_value %")) 
    except SQLAlchemyError as err: 
     return jsonify(message='Category not found.'), 400 
    category_list = category_schema.dumps(category) 
    return category_list.data, 200 

は、私は次のURLでhttpieで試してみました:HTTP GET http://192.168.1.98:5000/api/v1/search/category?querystr= "テスト"

エラー:肯定的な反応を願い

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) operator does not exist: character varying = boolean 

。ありがとうございました。

+0

は、文字列に変数を補間は、Python 3.6でのみ利用可能で、最大、および構文は 'F "{category_param_value}%" であろう'。しかし、注意してください。生のSQL文字列、HTMLなどに変数を補間することは危険です**。この場合、生のSQLを使用していないので、大丈夫です。 –

答えて

7

正しい構文を使用していません。また、渡す文字列をlikeにフォーマットする必要があります。

変更この行:これ

category = Category.query.filter_by(title=Category.title.like("category_param_value %")) 

category = Category.query.filter(Category.title.like(category_param_value+"%")).all() 
+0

ありがとうございます。今はうまくいきます。私は引数で%を使うのは間違いです。 –

関連する問題