将 python 字典传递给 psycopg2 游标
我需要调用 PostgreSQL 8.4 函数,该函数需要来自 Python 的 17 个输入参数。这些值存储在字典中。所以我可以写:
cur.execute("SELECT add_user(%s, %s, %s, %s, %s, %s, %s, .......)", user["nr"], user['email']...)
是否可以自动将字典中的值映射到函数参数(与字典中的键同名)?
像这样的东西:
cur.execute("SELECT add_user(*magic-here*)", user)
I need to call a PostgreSQL 8.4 function which requires 17 input paramters from Python. The values are stored in a dictionary. So I can write:
cur.execute("SELECT add_user(%s, %s, %s, %s, %s, %s, %s, .......)", user["nr"], user['email']...)
Is it possible to automatically map the values in the dictionary to the function arguments (which have the same name as the keys in the dictionary)?
Something like:
cur.execute("SELECT add_user(*magic-here*)", user)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下语法应该可以做到这一点:
感谢 Thiefmaster 对我最初在这里的内容进行了更正: 参数的
%(keyname)s
格式只是 Python Database API 2.0 - 请参阅paramstyle
的文档。不幸的是,其他 DB API 2.0 数据库适配器可能不支持此语法。有关有点类似问题的答案,但有额外的 xkcd 参考,请参阅:使用 psycopg2 / Python DB-API 和 PostgreSQL 进行参数化查询
The following syntax should do it:
Thanks to Thiefmaster for providing a correction to what I had here originally: The
%(keyname)s
format for parameters is just one of those defined in the Python Database API 2.0 - see the documentation forparamstyle
. Unfortunately, other DB API 2.0 database adapters may not support this syntax.For an answer to a somewhat similar question, but with a bonus xkcd reference, see: Parameterized queries with psycopg2 / Python DB-API and PostgreSQL