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

在Postgres Psycopg2 SQL查询中输入未指定数量的变量,sql,postgresql,psycopg2,Sql,Postgresql,Psycopg2,我试图使用psycogp2从postgresql数据库中检索一些数据,要么排除可变数量的行,要么不排除任何行 到目前为止,我掌握的代码是: def db_query(variables): cursor.execute('SELECT * ' 'FROM database.table ' 'WHERE id NOT IN (%s)', (variables,)) 这部分起作用。例如,如果我打电话: db_que

我试图使用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查询。谢谢你的帮助


谢谢

传递一个元组,因为它适合于记录:

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)

参数应该是列表或元组。请参阅(在“列表适应”下),感谢@clodoaldo Neto的回复。我不清楚如何调整它以便传入多个变量?@blountdj要传入多个变量,只需执行
参数=(var1,var2…