解决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实现购物系统(示例讲解)
Sep 13 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
通过shell+python实现企业微信预警
Mar 07 Python
python tkinter canvas 显示图片的示例
Jun 13 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 Python
python 获取谷歌浏览器保存的密码
Jan 06 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
apache php模块整合操作指南
2012/11/16 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
js实现导航跟随效果
2018/11/17 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
python如何快速拼接字符串
2020/10/28 Python
一道写SQL的面试题和答案
2013/11/19 面试题
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
农业大学毕业生的个人自我评价
2013/10/11 职场文书
企划主管岗位职责
2013/12/12 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
销售会计岗位职责
2014/03/15 职场文书
党员领导干部承诺书
2014/05/28 职场文书
应届生求职信
2014/05/31 职场文书
《叶问2》观后感
2015/06/15 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL