解决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私有属性和方法实例分析
Jan 15 Python
python字典基本操作实例分析
Jul 11 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
python Crypto模块的安装与使用方法
Dec 21 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
基于python实现雪花算法过程详解
Nov 16 Python
基于python实现可视化生成二维码工具
Jul 08 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
python 实时调取摄像头的示例代码
Nov 25 Python
python中entry用法讲解
Dec 04 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
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php多重接口的实现方法
2015/06/20 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
小程序实现录音功能
2020/09/22 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
Python的设计模式编程入门指南
2015/04/02 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
python使用配置文件过程详解
2019/12/28 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
java程序员面试交流
2012/11/29 面试题
关于旷工的检讨书
2014/02/02 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
部门活动策划方案
2014/08/16 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
2016年寒假家长评语
2015/10/10 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers