我正在尝试使用pgdb模块执行从Python到PostgreSQL的insert语句。
我看到文档上写着:
cursor.executemany(query, list of params)
# Execute a query many times, binding each param dictionary
# from the list.所以我试着这样做:
>>> insert = "insert into foo (name, number) values (?,?);"
>>> params = [{ 'name': 'John', 'number': 123 }, { 'name': 'Jack', 'number': 234 }]
>>> cursor.executemany(insert, params)这给了我一个错误,指向?。这种参数化查询的正确语法是什么?另外,如果这是在文档中,我可以在哪里找到它?
发布于 2011-07-19 14:37:59
你想要的
insert = "insert into foo (name, number) value (%(name)s, %(number)s);"可以通过paramstyle模块级常量找到DBAPI驱动程序支持的参数包含样式。根据PEP 249 (也称为python database API2规范):
字符串常量,说明接口应设置的参数标记格式的类型。可能的值为2:
“‘qmark”问号样式,例如“...WHERE name=?”‘数字’数字,位置样式,例如'...WHERE name=:1‘’命名的样式,例如'...WHERE name=:name‘' format’ANSI C printf格式代码,例如'...WHERE name=%s‘’Python扩展格式代码,例如'...WHERE name=%(name)s‘
如果你检查pgdb,你会看到
>>> import pgdb
>>> pgdb.paramstyle
'pyformat'https://stackoverflow.com/questions/6741636
复制相似问题