2

フラスコのクエリ文字列変数をWHERE句のパラメータとしてpsycopgに渡す正しい方法は何ですか?

具体的には、変数が設定されていない場合、変数を WHERE 句に追加したくありません。

 id = int(request.args.get('id'))
 cur.execute("SELECT * FROM data WHERE id = %s;", id)

id が None の場合、WHERE 句のない SQL が必要です。

SELECT * FROM data

これを行う唯一の方法は、if ステートメントを使用することですか?

4

1 に答える 1

3

(有効な)idクエリ パラメータが指定されていない場合は、別のクエリを発行するだけです。

id = request.args.get('id', type=int)
if id is not None:
    cur.execute("SELECT * FROM data WHERE id = %s", (id,))
else:
    # No (valid) id given, give everything
    cur.execute("SELECT * FROM data")

メソッドtypeにキーワード引数を使用したことに注意してください。キーが見つからない場合、または整数に変換できない場合、メソッドはデフォルト値を返します (引数で別の方法で指定されていない限り)。MultiDict.get()Nonedefault

于 2016-06-05T22:09:30.200 に答える