首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符串中转义‘?

问如何在字符串中转义‘?
EN

Stack Overflow用户
提问于 2012-07-06 22:46:12
回答 5查看 8.6K关注 0票数 3

我有一个小脚本,它为我创建一个特定的INSERT SQL语句。

对于postgresql,我需要将要插入的值封装在两个单引号中。

不幸的是,要插入的一些值字符串也包含一个单引号,我需要自动转义它们。

代码语言:javascript
复制
for line in f:
    out.write('(\'' + line[:2] + '\', \'' + line[3:-1] + '\'),\n')

如何确保line[3:-1]中的任何单引号(例如‘)自动转义?

谢谢,

更新:

这条线

代码语言:javascript
复制
CI|Cote D'ivoire

未到期“

更新2:

我不能在值中使用双引号。

INSERT INTO "App_country" (country_code, country_name) VALUES ("AF", "Afghanistan")

我收到错误消息:ERROR: column "AF" does not exist

不过,这样做很好:

INSERT INTO "App_country" (country_code, country_name) VALUES ('AF', 'Afghanistan')

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-06 23:40:43

正如在佩普-249中所描述的,DBPI是各种数据库的通用接口。不同的数据库存在不同的实现。对于postgres,这里是精神科。从医生那里:

代码语言:javascript
复制
cur.execute(
...     """INSERT INTO some_table (an_int, a_date, a_string)
...         VALUES (%s, %s, %s);""",
...     (10, datetime.date(2005, 11, 18), "O'Reilly"))

您可以简单地以元组的形式传递参数。底层库会为您转义它。这比尝试使用自己的更安全、更容易。

票数 3
EN

Stack Overflow用户

发布于 2012-07-07 00:04:13

逃避引用的SQL标准方法是将其加倍:

代码语言:javascript
复制
'This won''t be a problem.'

因此,将每个引号替换为两个引号(并在Python中使用双引号以保持理智):

代码语言:javascript
复制
out.write("('" + line[:2] + "', '" + line[3:-1].replace("'", "''") + "'),\n")
票数 2
EN

Stack Overflow用户

发布于 2012-07-07 00:32:09

不要对DML使用生成的、滚动的自己的转义。使用基思提到的适当的DBAPI。为了确保从各种源和类型转换几乎可以透明地发生,工作已经开始了。如果您正在使用DDL (如CREATE TABLE whatever (...) )--如果您信任您自己的数据源,您可能会稍微松懈一些。

使用示例中显示的数据的

代码语言:javascript
复制
import sqlite3

text = "CI|Cote D'ivoire" # had to been escaped as it's a string literal, but from another data source - possibly not...

code, name = text.split('|', 1)

db = sqlite3.connect(':memory:')
db.execute('create table something(code, name)')
db.execute('insert into something(code, name) values(?, ?)', (code, name))

for row in db.execute('select * from something'):
    print row
# (u'CI', u"Cote D'ivoire")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11370594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档