Python Flask和Psycopg - 在WHERE中查询字符串request.get

时间:2016-06-05 22:06:36

标签: python flask psycopg

将flask中的查询字符串变量作为WHERE子句中的参数传递给psycopg的正确方法是什么?

具体来说,如果未设置变量,我不希望将变量添加到WHERE子句中:

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

如果id为None,我希望SQL没有WHERE子句:

SELECT * FROM data

唯一的方法是使用if语句吗?

1 个答案:

答案 0 :(得分: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")

请注意,我为MultiDict.get() method使用了type关键字参数;如果密钥丢失或无法转换为整数,则该方法返回默认值(None,除非通过default参数另行指定)。