【发布时间】:2017-10-22 07:05:57
【问题描述】:
注意:我发现 re.escape(string) 会转义,但是人,它会转义很多吗?如果必须,我可以使用它,但我将问题留给任何其他想法,以防将来偶然发现。
我找到了一个很棒的 S.O.在这里回答关于使用 Python 将数据插入 MySQL(我使用的是 2.7),其中数据包含撇号:Python mySQL - escaping quotes
简而言之,S.O.答案是这样做.....
sql = "INSERT INTO TABLE_A(COL_A,COL_B) VALUES(%s, %s)"
a_cursor.execute(sql, (val1, val2))
不过,我需要为 UPDATE 执行此操作。我目前的方法是......
sql = "UPDATE table SET COL_A='R', COL_B='%s', COL_C='%s', COL_D='%s', COL_E='%s',COL_F='%s' WHERE COL_G='%s'" % (val1, val2, val3, val4, val5, val6)
cur.execute(sql)
我得到的错误是:1064 语法错误。
问题是 val5,它是一个包含撇号的文本块(谁知道还有什么),我需要一种在 UPDATE 之前转义特殊字符的方法。我偷偷地怀疑我只需要做这个庞大的例程,我必须专门拼出我倾向于找到的字符,但我想看看是否有其他人遇到过这个问题。
感谢任何指向正确方向的建议。
【问题讨论】:
-
我最终使用了一个函数来转义单个撇号。不过,我不会选择我自己的答案。
-
您的实际代码中是否所有这些花哨的引号,或者您是否在某处使用了插入它们的编辑器?由于这些引号,
‘R’无效,请使用'R'.. -
不确定,但我只使用常规单引号。
标签: python sql python-2.7 escaping mysql-python