psycopg2相当于mysqldb.escape_string?

AP2*_*257 24 sql postgresql psycopg2

我在Python中使用psycopg2将一些值传递给postgres字符字段.一些字符串值包含句点,斜杠,引号等.

使用MySQL我只是逃避字符串

MySQLdb.escape_string(my_string)
Run Code Online (Sandbox Code Playgroud)

是否有psycopg2的等价物?

pir*_*iro 30

转义是自动的,你只需要打电话:

cursor.execute("query with params %s %s", ("param1", "pa'ram2"))
Run Code Online (Sandbox Code Playgroud)

(注意使用python%运算符),这些值将被正确转义.

您可以使用手动转义变量extensions.adapt(var),但这很容易出错并且不考虑连接编码:它应该用于常规客户端代码.

  • 与“adapt()”一样,您可以显式地使用特定的适应协议对象;例如 `QuotedString(r"O'Reilly").getquoted()` 请参阅[文档](http://initd.org/psycopg/docs/extensions.html#sql-adaptation-protocol-objects) (2认同)

not*_*peg 7

就像皮罗说的那样,逃避是自动的.但是有一种方法可以使用cursor.mogrify(sql,[params])返回psycopg2转义的完整sql


Bil*_*win 0

Psycopg2没有这样的方法。它具有用于使 Python 值适应 ISQLQuote 对象的扩展getquoted(),并且这些对象具有返回 PostgreSQL 兼容值的方法。

有关如何使用它的示例,请参阅此博客:

使用 psycopg2 在 SQL 语句中引用绑定值

2019-03-03 更新:更改了 archive.org 的链接,因为九年后,原始链接不再可用。

  • 请注意,那里的人是错误的:他想要做的事情可以使用 `mogrify()` 方法获得(http://initd.org/psycopg/docs/cursor.html#cursor.mogrify) (5认同)