我想通过psyopg2执行这个sql:
select indexname from pg_indexes where (tablename, indexname) in (
('tab1', 'index1'),
('tab2', 'index2')
);
代码如下:
cursor.execute(
'select tablename, indexname from pg_indexes where (tablename, indexname) IN %s;', [
[('tab1', 'col1'), ('tab2', 'col2')],
])
我有个例外:
ProgrammingError: syntax error at or near "ARRAY"
LINE 1: ...e from pg_indexes where (tablename, indexname) IN ARRAY[('ta...
如何将元组列表传递给PostgreSQL vis psyopg2?
最佳答案
如果传递一个元组而不是一个列表,则它可以工作:
cursor.execute(
'select tablename, indexname from pg_indexes where (tablename, indexname) IN %s;', [
tuple([('tab1', 'col1'), ('tab2', 'col2')]),
])
如果你通过了一个名单,别问我为什么会失败。