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

标签 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 查询。任何帮助表示赞赏。

谢谢

最佳答案

传递适应记录的元组:

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)

关于sql - 在 Postgres Psycopg2 SQL 查询中输入未指定数量的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640536/

相关文章:

sql - PostgreSQL:影响多个表的约束

function - 从记录变量中选择列 (PostgreSQL 8.4)

python - psycopg2 aws lambda超时错误

sql - 我可以使用什么 SQL 服务器函数来获取 nvarchar(max) 列的字符或字节长度?

mysql - 根据类似于 mysql 的标签选择相关标题

SQL Server : DDL trigger, 控制表创建

postgresql - Postgres : Selecting a 24 hour window for multiple dates and picking the initial date as start date

sql - 选择自己的阵列。 PostgreSQL 9.5

python - 尝试在 Psycopg2 不存在的位置插入时出现索引错误

python - 在execute psycopg2方法中调用SQL文件?