解决python 执行sql语句时所传参数含有单引号的问题


Posted in Python onJune 06, 2020

在编写自己的程序时,需要实现将数据导入数据库,并且是带参数的传递。

执行语句如下:

sql_str = "INSERT INTO teacher(t_name, t_info, t_phone, t_email) VALUES\
(\'%s\', \'%s\', \'%s\', \'%s\')" % (result, result2, phoneNumber, Email)

cur.execute(sql_str)

执行程序后,产生错误:

ProgrammingError: (1064, "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 '07、PRICAI'08、ACML'09 程序委员会主席/共同主席,多次担任 ACM K' at line 1")

发现是因为result2参数为一个字符串,而字符串中出现了单引号 ',mysql语句受到影响报错。

原本认为这个问题应该会是有标准解决方案,可是网上查询了一下,遇到这个问题的人不少,但没有很好的方法解决。

于是考虑了一下,可以让sql语句在读取到单引号时,知道这是字符串文本的单引号,所以可以将参数中单引号替换为 \' ,这样或许可以顺利语句如下:

result2 = result2.replace("'","\\'") #将result2中的 ' 替换为 \'

PS: 这里请务必看清双引号以及反斜杠的使用:)

经过测试,问题得到了顺利解决。

补充知识:python动态生成变量及sql语句与DF表转化

先说效果:

解决python 执行sql语句时所传参数含有单引号的问题

如图,本来是这样的一个DF表,表示各字段限制条件(A、B、C、D均为字段名)

解决python 执行sql语句时所传参数含有单引号的问题

通过下面步骤转化为一条sql语句,当然也做了反向操作

for i in range(3):
locals()['f'+str(i)]=[]

import pandas as pd
import numpy as np
a = pd.DataFrame({"A":[">=",5],
     "B":["<",6],
     "C":["in",'("ha","he")'],
     "D":["like","*q*"]
     })
print(a)
b = []
for i in a.columns:
 b.append(str(i)+" "+str(a[i][0])+" "+str(a[i][1]).strip())
c = " and ".join(b)
 #b = b+str(i)+" "+str(a[i][0])+" "+str(a[i][1])+" "+"and"+" "
#print(c)

d = c.split(" and ")
for i in range(3):
 locals()['f'+str(i)]=[]
 for j in (range(len(d))):
  f = d[j].split(" ")
  locals()['f' + str(i)].append(f[i])

print(f0,f1,f2)
g = pd.DataFrame(columns=f0,data=[f1,f2])
print(g)

以上这篇解决python 执行sql语句时所传参数含有单引号的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 #Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 #Python
在python中使用pyspark读写Hive数据操作
Jun 06 #Python
使用Python构造hive insert语句说明
Jun 06 #Python
Python通过kerberos安全认证操作kafka方式
Jun 06 #Python
pandas分批读取大数据集教程
Jun 06 #Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 #Python
You might like
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
python中enumerate函数用法实例分析
2015/05/20 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
报到证丢失证明
2014/01/11 职场文书
给面试官的感谢信
2014/02/01 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
2014年民政工作总结
2014/11/26 职场文书
刘公岛导游词
2015/02/05 职场文书
毕业生个人总结
2015/02/28 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js