解决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实现rest请求api示例
Apr 22 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
在python中使用xlrd获取合并单元格的方法
Dec 26 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
python 使用pandas读取csv文件的方法
Dec 24 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
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
php实现word转html的方法
2016/01/22 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
react 生命周期实例分析
2020/05/18 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
Python3实现Web网页图片下载
2016/01/28 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Django框架 querySet功能解析
2019/09/04 Python
golang/python实现归并排序实例代码
2020/08/30 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
selenium自动化测试入门实战
2020/12/21 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
主治医师岗位职责
2013/12/10 职场文书
初中音乐教学反思
2014/01/12 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
小英雄雨来观后感
2015/06/09 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
解读MySQL的客户端和服务端协议
2021/05/10 MySQL