引用自:https://blog.csdn.net/zhaoya_huangqing/article/details/48036839

一、在组成SQL语句并发送命令时完全按照Python中的样式去传递,这样在MySql中执行的时候就会遇到错误的命令,由单引号或者双引号引起。因此应该在组成字符串之前,手动将字符串中的单引号或者双引号之前加上反斜杠,这样在组合成字符串的时候,MySql就能够识别了。
例如:
str="""select count(*) from %s where %s.AppId="%s" """%(self._TB_NAME,self._TB_NAME,appid)
print str
cur.execute("%s"%(str))
 
如果appid是一种含有单引号或者双引号的变量,例如 I'm XXX and say "hi!"
在这个变量中含有单引号,双引号。这样组成的SQL语句为:
select count(* )from  table where table.AppId =" I'm XXX and say "hi!""
这样的话,这个SQL语句明显就会出错。
因此在组成str之前应该对appid中的单引号双引号进行处理。
使用replace方法将单引号和双引号前面加上反斜杠。
appid=appid.replace("'","\\\'")  将单引号转成\单引号
appid=appid.replace('"','\\\"')  将双引号转成\双引号
这样在组成的SQL语句就成了
select count(* )from  table where table.AppId =" I\'m XXX and say \"hi!\""
这样MySql就将字符串中的单引号双引号正确识别了。
 
二、python向mysql数据库插入数据时经常会碰到一些特殊字符,如单引号,双引号。

解决办法:
cur.execute(u'''update table set name = %s where id = %s;''' , (name.decode('utf-8'),index))

举例:
name="I'mHere"
注意: cursor.execute()可以接受一个参数,也可以接受两个参数:
(1) cur.execute("insert into resource(cid,name) values(%s, %s)" , (12,name) );
    这种格式是接受两个参数,MySQLdb会自动替你对字符串进行转义和加引号,不必再自己进行转义,执行完此语句之后,resource表中多了一条记录: 12  I'mHere
(2) cur.execute("insert into resource(cid,name) values(%s, %s)" % (12,name) );
    这种格式是利用python的字符串格式化自己生成一个query,也就是传给execute一个参数,此时必须自己对字符串转义和增加引号,即上边的语句是错误的,应该修改为:
    name = MySQLdb.escape_string(name);
    cursor.execute("insert into resource(cid,name) values(%s, '%s')" % (12,name) );
    这样插入的记录才和(1)一样:12 I'mHere

三、如果要插入空值可以用如下方法
  a = None
       cur.execute("insert into resource(cid,name) values(%s, %s,%s)" , (12,name,a) );
个人分类: Pythonmysql

python 字符串组成MySql 命令时,字符串含有单引号或者双引号导致出错解决办法的更多相关文章

  1. Js参数值中含有单引号或双引号解决办法

    <script type="text/javascript"> function Display(LoginEmail, UserName, ID) {         ...

  2. python 插入mysql数据库字符串中含有单引号或双引号报错

    出现问题场景:使用mysql数据库管理接口测试用例,新增接口用例时,传入的paras内容,有多层嵌套的时候,就会有["]双引号括住[']单引号的情况,可能在插入单双引号的数据到数据库的时候, ...

  3. Python中字符串使用单引号、双引号标识和三引号标识,什么是三引号?什么情况下用哪种标识?

    一.三引号是指三个单引号或者三个双引号: 二.Python中字符串如果以单引号.双引号标识和三引号标识开头,则字符串结尾也必须是对应的标识,不能变更: 三.三者的异同: 1.三者都是字符串,大部分情况 ...

  4. PHP定义字符串时单引号和双引号的区别

    一般用单引号或双引号标识一个字符串.单引号串与双引号串,在PHP中的处理是不同的.双引号中的内容可以被解释并被替换,单引号串中的内容则被作为普通字符处理. 例如: $str=6; echo " ...

  5. 【python】sql语句插入中内容同时包含单引号和双引号的解决办法

    在python中调用MySQLdb模块插入数据信息,假设待输入信息data为: Hello'World"! 其中同时包含了单引号和双引号 一般插入语句为 sql = "insert ...

  6. python 单引号、双引号和三引号混用

    单引号: 当单引号中存在单引号时,内部的单引号需要使用转义字符,要不然就会报错: 当单引号中存在双引号时,双引号可以不用加转义字符,默认双引号为普通的字符,反之亦然. 双引号: 当双引号中存在双引号时 ...

  7. Python单引号、双引号、三个双引号的区别

    单引号与双引号是作用是一样的,都是字符串定界符. 如果字符串里面包含的与边界一样的符号,需要转义符来将该符号转成普通字符,不然编译器会将字符串中的那个单引号或双引号当成字符串的边界. 例如: ‘I d ...

  8. mysql单引号和双引号的用法

    表名,列名最好用`(esc下面那个,不用`会出错) 这就要从双引号和单引号的作用讲起:双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出.例如:$abc= ...

  9. python--基础学习(三)字符串单引号、双引号、三引号

    1.基本认识 单引号字符串:'python' 双引号字符串:"python" 三引号字符串:'''python'''(三单引号),"""python& ...

随机推荐

  1. OSI七层模型与TCP/IP四层模型

    OSI七层模型与TCP/IP四层模型 OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图 ...

  2. vue自学入门-3(vue第一个例子)

    1.安装后打开8080端口,http://localhost:8080/#/ 2.进入项目目录 2.默认路由 3.修改文件index.js 将Import HelloWorld一句修改为 import ...

  3. ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法

    ssh 登录出现Are you sure you want to continue connecting (yes/no)?解决方法 1,可以使用ssh -o 的参数进行设置例如: ssh -o St ...

  4. mongoDB - 日常操作三

    MongoDB 进程控制 进程控制 db.currentOp() # 查看活动进程 db.$cmd.sys.inprog.findOne() # 查看活动进程 与上面一样 opid # 操作进程号 o ...

  5. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  6. Maxwell入门

    1 下载tar包 Download binary distro: https://github.com/zendesk/maxwell/releases/download/v1.19.4/maxwel ...

  7. VS2012 安装番茄插件

    1.visual assist x 1929_大番茄.rar 下载地址: http://pan.baidu.com/s/1qXOUuJE 网盘提取密码: 3mka 文件解压密码: eg5p 2.安装完 ...

  8. android view绘制流程 面试

    一.view树的绘制流程 measure--->layout--->draw measure 1.ViewGroup.LayoutParams 指定部件的长宽 2.MeasureSpec ...

  9. SpringBoot扩展SpringMVC自动配置

    SpringBoot中自动配置了 ViewResolver(视图解析器) ContentNegotiatingViewResolver(组合所有的视图解析器) 自动配置了静态资源文件夹.静态首页.fa ...

  10. Hacker学习发展流程图

    题记:梅花香自苦寒来.转载请注明版权:http://a1pass.blog.163.com/      A1Pass      今天看一位网友的日志上面有一篇名为“学黑的目标”的日志,里面有一个略显粗 ...