当前位置: 首页 > 面试题库 >

Python MySQL转义特殊字符

璩俊雅
2023-03-14
问题内容

我正在使用python将带有特殊字符的字符串插入MySQL。

要插入的字符串如下所示:

macaddress_eth0;00:1E:68:C6:09:A0;macaddress_eth1;00:1E:68:C6:09:A1

这是SQL:

UPGRADE inventory_server 
set server_mac = macaddress\_eth0\;00\:1E\:68\:C6\:09\:A0\;macaddress\_eth1\;00\:1E\:68\:C6\:09\:A1' 
where server_name = 'myhost.fqdn.com

执行更新时,出现此错误:

ERROR 1064 (42000): 
You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'UPGRADE inventory_server 
set server_mac = 'macaddress\_eth0\;00\:1E\:68\:C6\:09\' at line 1

python代码:

sql = 'UPGRADE inventory_server set server_mac = \'%s\' where server_name = \'%s\'' % (str(mydb.escape_string(macs)),host)
print sql

try:
    con = mydb.connect(DBHOST,DBUSER,DBPASS,DB);
    with con:
       cur = con.cursor(mydb.cursors.DictCursor)
       cur.execute(sql)
   con.commit()
except:
return False

如何原始插入此文本?


问题答案:

这是您应该使用参数绑定而不是在Python中格式化参数的原因之一。

只是这样做:

sql = 'UPGRADE inventory_server set server_mac = %s where server_name = %s'

然后:

cur.execute(sql, macs, host)

这样,您可以将字符串作为字符串处理,然后让MySQL库找出如何为您引用和转义它。

最重要的是,您通常可以获得更好的性能(因为MySQL可以编译和缓存一个查询,并将其重用于不同的参数值),并且可以避免SQL注入攻击(最容易被黑客入侵的方法之一)。



 类似资料:
  • 正如我们所看到的,一个反斜杠 "\" 是用来表示匹配字符类的。所以它是一个特殊字符。 还存在其它的特殊字符,这些字符在正则表达式中有特殊的含义。它们可以被用来做更加强大的搜索。 这里是包含所有特殊字符的列表:[ \ ^ $ . | ? * + ( )。 现在并不需要尝试去记住它们 —— 当我们分别处理其中的每一个时,你自然而然就会记住它们。 转义 如果要把特殊字符作为常规字符来使用,只需要在它前面

  • 问题内容: 我想电视机1 ® 2的outputText: 什么不对?我大写。 问题答案: 您可以选择以下之一 在您最初的建议中,您放错了位置,应该在 您也可以完全删除(但您的(R)不会很小) 最后,您可以直接使用它而无需转义

  • 问题内容: Oracle中是否有一种简单的方法来转义SQL语句中的特殊字符?(即%,&,’)我看到了有关手动转义字符的链接,但我认为Oracle可能提供了一种更简便的方法。 注意:我正在通过ORM生成动态SQL select语句。 问题答案: 如果使用绑定变量和ORM,则应自动处理嵌入的单引号和“&”号。这些是SQL * Plus或SQL * Developer中的特殊字符。 要在查找文字字符%和

  • 问题内容: 我们为科学应用程序提供了一个带有较长段落的表格,其中包含诸如符号beta(ß-arrestin)等字符。我们在Mule上运行一个JSON服务,该服务获取数据并持久保存到oracle数据库中。这个带有长段的特殊元素给我RAML / JSON错误。下面是错误 科学家写下的形式元素我们无法控制。因此,在M子方面,我们如何像Java具有URLEncoded一样自动地转义这些字符。非常感谢 问题

  • 我们有一个表单,其中有一个很长的段落,用于包含符号beta(ß-arrestin)等字符的Scientific应用程序。我们有一个在Mule上运行的JSON服务,它获取数据并保存到oracle数据库。这个带有长段落的特殊元素在RAML/JSON中给了我一个错误。下面是错误 科学家们所写的形式元素我们无法控制。因此,在骡子方面,我们如何像java那样自动摆脱这些角色呢。非常感谢

  • 本文向大家介绍Shell命令行中特殊字符与其转义详解(去除特殊含义),包括了Shell命令行中特殊字符与其转义详解(去除特殊含义)的使用技巧和注意事项,需要的朋友参考一下 特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数

  • 问题内容: 有没有一种方法可以将字符串转换为可以在Web文档中正确显示的字符串?例如,更改字符串 至 问题答案: 具有专门为此设计的功能: http://commons.apache.org/proper/commons- lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html

  • 我正在使用Apache FOP,并且已经看到:XSL-在XSL:when测试期间转义撇号,用于在XSL:when测试期间转义字符。 但是,我在使用xsl:模板匹配执行相同的等价测试时遇到问题 示例XML 样品XSL PDF格式输出: 当测试成功而模板匹配失败时,xsl: 如果有人能给我指出正确的方向或者告诉我我做错了什么,我会非常感激的。 非常感谢