在Postgres Psycopg2 SQL查询中输入未指定的变量数

时间:2017-10-09 07:06:10

标签: sql postgresql psycopg2

我试图使用psycogp2从postgresql数据库中检索一些数据,并排除可变数量的行或排除任何行。

我到目前为止的代码是:

def db_query(variables):
    cursor.execute('SELECT * '
                   'FROM database.table '
                   'WHERE id NOT IN (%s)', (variables,))

这部分有效。例如。如果我打电话:

db_query('593')

有效。对于任何其他单个值也是如此。但是,当我输入多个变量时,我似乎无法使其工作,例如:

db_query('593, 595')

我收到错误:

psycopg2.DataError: invalid input syntax for integer: "593, 595"

我不确定如何正确输入查询或修改SQL查询。任何帮助表示赞赏。

由于

1 个答案:

答案 0 :(得分:1)

传递一个元组,因为它适应了记录:

query = """
    select *
    from database.table
    where id not in %s
"""
var1 = 593
argument = (var1,)
print(cursor.mogrify(query, (argument,)).decode('utf8'))
#cursor.execute(query, (argument,))

输出:

select *
from database.table
where id not in (593)