psycopg2 相当于 mysqldb.escape_string?
我正在使用 Python 中的 psycopg2 将一些值传递到 postgres 字符字段。一些字符串值包含句点、斜杠、引号等。
转义字符串即可。
MySQLdb.escape_string(my_string)
使用 MySQL,我只需使用Is there an equals for psycopg2?
I'm passing some values into a postgres character field using psycopg2 in Python. Some of the string values contain periods, slashes, quotes etc.
With MySQL I'd just escape the string with
MySQLdb.escape_string(my_string)
Is there an equivalent for psycopg2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
转义是自动的,您只需调用:(
请注意,未使用 python % 运算符)并且值将被正确转义。
您可以使用
extensions.adapt(var)
手动转义变量,但这很容易出错,并且不会考虑连接编码:它不应该被使用在常规客户端代码中。Escaping is automatic, you just have to call:
(notice that the python % operator is not used) and the values will be correctly escaped.
You can escape manually a variable using
extensions.adapt(var)
, but this would be error prone and not keep into account the connection encoding: it is not supposed to be used in regular client code.就像piro所说,转义是自动的。但是有一种方法也可以使用 cursor.mogrify(sql 返回 psycopg2 转义的完整 sql , [参数])
Like piro said, escaping is automatic. But there's a method to also return the full sql escaped by psycopg2 using cursor.mogrify(sql, [params])
万一查询参数不足并且您需要自己转义字符串,您可以使用 Postgres 转义字符串常量 以及 Python 的
repr
(因为 Python 转义非 ascii 和 unicode 字符的规则与Postgres的):In the unlikely event that query parameters aren't sufficient and you need to escape strings yourself, you can use Postgres escaped string constants along with Python's
repr
(because Python's rules for escaping non-ascii and unicode characters are the same as Postgres's):psycopg2
在2.7版本中似乎添加了一个方法:http://initd.org/psycopg/docs/extensions.html# psycopg2.extensions.quote_ident
如果您收到如下错误:
TypeError:参数 2 必须是连接或游标
,请尝试:psycopg2
added a method in version 2.7 it seems:http://initd.org/psycopg/docs/extensions.html#psycopg2.extensions.quote_ident
If you get an error like:
TypeError: argument 2 must be a connection or a cursor
, try either:Psycopg2没有这样的方法。它有一个扩展,用于使Python值适应ISQLQuote对象,这些对象有一个 getquoted() 方法来返回 PostgreSQL 兼容的值。
有关如何使用它的示例,请参阅此博客:
使用 psycopg2 在 SQL 语句中引用绑定值
更新 2019-03-03:更改了 archive.org 的链接,因为九年后,原始链接不再可用。
Psycopg2 doesn't have such a method. It has an extension for adapting Python values to ISQLQuote objects, and these objects have a
getquoted()
method to return PostgreSQL-compatible values.See this blog for an example of how to use it:
Quoting bound values in SQL statements using psycopg2
Update 2019-03-03: changed the link to archive.org, because after nine years, the original is no longer available.