将python字典传递给psycopg2游标

时间:2011-02-28 08:35:54

标签: python postgresql 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)

1 个答案:

答案 0 :(得分:9)

以下语法应该这样做:

cur.execute("SELECT add_user(%(nr)s, %(email)s, ...) ...", user)

感谢Thiefmaster对我原来的内容进行了更正: %(keyname)s参数格式只是Python Database API 2.0中定义的格式之一 - 请参阅paramstyle的文档。不幸的是,其他DB API 2.0数据库适配器可能不支持此语法。

对于某个类似问题的答案,但有一个额外的xkcd参考,请参阅:Parameterized queries with psycopg2 / Python DB-API and PostgreSQL