gpt4 book ai didi

python - 如何使用 pgdb.executemany?

转载 作者:太空狗 更新时间:2023-10-30 00:00:24 24 4
gpt4 key购买 nike

我正在尝试使用 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)

这给我一个错误,指向 ?。这种参数化查询的正确语法是什么?另外,如果这在文档中,我在哪里可以找到它?

最佳答案

你想要

insert = "insert into foo (name, number) value (%(name)s, %(number)s);"

您的 DBAPI 驱动程序支持哪种参数包含样式可以通过 paramstyle 模块级常量找到。根据PEP 249 (又名 python 数据库 API 2 规范):

String constant stating the type of parameter marker formatting expected by the interface. Possible values are [2]:

'qmark'         Question mark style, 
e.g. '...WHERE name=?'
'numeric' Numeric, positional style,
e.g. '...WHERE name=:1'
'named' Named style,
e.g. '...WHERE name=:name'
'format' ANSI C printf format codes,
e.g. '...WHERE name=%s'
'pyformat' Python extended format codes,
e.g. '...WHERE name=%(name)s'

如果你检查 pgdb,你会看到

>>> import pgdb
>>> pgdb.paramstyle
'pyformat'

关于python - 如何使用 pgdb.executemany?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6741636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com