python - 使用 psycopg2/Python DB-API 和 PostgreSQL 的参数化查询

标签 python postgresql psycopg2

让 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/

相关文章:

python - 如何重命名 IPython 中的魔法函数?

python - 正确使用PyQt定时器/ sleep

sql - 如何在 SQL (Postgres) 中查找子字符串

postgresql - 使用 PostGIS 和 OpenLayers 的最佳方式是什么?

python - 使用 psycopg2 缓存中间表

testing - 我需要在 Plone 部署中运行 psycopg2 测试吗?

python - 使用大数据文件进行计算

python - 我如何知道 Windows 中正在运行哪些 python 脚本?

postgresql - 环回 - 授权 GET 用户?

python - 检查是否返回结果并分配给变量