解决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笔记(叁)继续学习
Oct 24 Python
Django中几种重定向方法
Apr 28 Python
python基于http下载视频或音频
Jun 20 Python
python在回调函数中获取返回值的方法
Feb 22 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
python变量命名的7条建议
Jul 04 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
python实现TCP文件传输
Mar 20 Python
python excel和yaml文件的读取封装
Jan 12 Python
Python之基础函数案例详解
Aug 30 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
img标签中onerror用法
2009/08/13 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
Django中间件实现拦截器的方法
2018/06/01 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python怎么提高计算速度
2020/06/11 Python
通过cmd进入python的步骤
2020/06/16 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
儿科护士自我鉴定
2013/10/14 职场文书
承诺书范文
2014/06/03 职场文书
学雷锋倡议书
2015/01/19 职场文书
客房服务员岗位职责
2015/02/09 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
详解MySQL主从复制及读写分离
2021/05/07 MySQL