让 psycopg2 将参数化查询传递给 PostgreSQL 的最佳方法是什么?我不想编写自己的转义机制或适配器,并且 psycopg2 源代码和示例很难在 Web 浏览器中阅读。
如果我需要切换到 PyGreSQL 或其他 python pg 适配器,这对我来说很好。我只想要简单的参数化。
最佳答案
psycopg2
遵循 DB-API 2.0 的规则(设置在 PEP-249 中)。这意味着您可以从 cursor
对象调用 execute
方法并使用 pyformat
绑定(bind)样式,它会为您进行转义。例如,以下应该是安全的(并且可以工作):
cursor.execute("SELECT * FROM student WHERE last_name = %(lname)s",
{"lname": "Robert'); DROP TABLE students;--"})
关于python - 使用 psycopg2/Python DB-API 和 PostgreSQL 的参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466741/