让psycopg2将参数化查询传递给PostgreSQL的最佳方法是什么?我不想编写自己的escaping机制或适配器,psycopg2源代码和示例在web浏览器中很难阅读.

如果我需要切换到PyGreSQL或其他python pg适配器之类的东西,我也可以.我只想要简单的参数化.

推荐答案

psycopg2遵循DB-API 2.0的规则(见PEP-249).这意味着您可以从cursor对象调用execute方法,并使用pyformat绑定样式,它将为您进行转义.例如,以下是安全(和工作):

cursor.execute("SELECT * FROM student WHERE last_name = %(lname)s", 
               {"lname": "Robert'); DROP TABLE students;--"})

Postgresql相关问答推荐

无法在PostgreSQL中创建方案和表

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

将XML解析从T-SQL迁移到Postgres时出现问题

无法使用golang在postgresql中使用自定义类型插入/更新数据

无法从外部连接到在 AWS EC2 实例上运行的 Postgres

PostgreSQL比较两个jsonb对象

运算符不存在:integer = integer[] 在使用 ANY 的查询中

如何向文本字段添加长度约束

我如何在docker中备份数据库

如何防止用户看到其他数据库和其他数据库中的表?

没有查询要创建的in ... error

将主键更改为自动递增

如何在 postgres 模式中列出关系

错误:prepared statement "S_1" already exists

FOR EACH STATEMENT 触发器示例

使用 Homebrew 安装 icu4c 版本 63

如何使用 PostgreSQL 在任何列中查找所有具有 NULL 值的行

psql 将默认 statement_timeout 设置为 postgres 中的用户

Rails 5 db 迁移:如何修复 ActiveRecord::ConcurrentMigrationError

pg_restore 目录错误