【发布时间】:2014-08-19 18:22:52
【问题描述】:
如果我跑步
cur.execute('SELECT * FROM some_table WHERE some_column = %s;', ('some_value',))
然后立即调用cur.fetchall() 成功,并产生与我在psql 中运行以下命令时得到的结果完全一致的输出:
some_db=> SELECT * FROM some_table WHERE some_column = 'some_value';
但如果我跑了
cur.executemany('SELECT * FROM some_table WHERE some_column = %s;',
[('some_value',)])
...应该基本等价于之前的cur.execute(...)语句,后续调用cur.fetchall()引发异常:
ProgrammingError: no results to fetch
如果在对executemany 的调用中作为第二个参数传递的序列有多个条目,我会得到同样的异常:
cur.executemany('SELECT * FROM some_table WHERE some_column = %s;',
[('some_value',), ('some_other_value',)])
...或者如果我使用pyformat 样式来传递参数
cur.executemany('SELECT * FROM some_table WHERE some_column = %(v)s;',
[{'v': 'some_value'}, {'v': 'some_other_value'}])
我的代码有什么问题?
顺便说一句,我知道earlier question,但那里的答案没有帮助。
【问题讨论】:
标签: python postgresql psycopg2