我有一个python值列表和一个包含特定列的postgresql表。我想知道python列表中每个元素的表中是否有具有该ID的行
例如,假设我有这个python列表:
vals = [4, 8, 15, 16, 23, 42]
还有一个问题是:
^{pr2}$给出:
[4, 5, 6, 7, 8]
然后我希望查询返回:
[True, True, False, False, False, False]
我可以循环查看列表并为每个值执行一个新的“selectexists”,但是我想知道是否有一种方法可以在一次调用中完成它?在
我只能使用postgresql 9.0
这个问题更多的是关于SQL而不是aboytpython或psycopg。我会用这样的查询:
以“表格顺序”或:
^{pr2}$以获得“VAL订单”中的结果。在
幸运的是,psycopg提供了一个默认适配器,可以将Python列表转换为PostgreSQL数组,代码非常简单:
或者:
请注意,绑定变量参数应该是
dict
或元组,并且您希望将完整列表绑定到查询中的单个变量,这意味着您应该使用1元素元组((vals,)
),而不是直接传递vals
。在我认为这需要混合使用字符串格式和占位符(因为在
vals
中,每个项目需要一个%s
):这种方法应该保证发送给DB的数据量(对于};我认为逻辑上不可能比big-O更好。在
where ... in
子句)和从中得到的数据量都是O(N)
,其中N
等于{相关问题 更多 >
编程相关推荐