pymysql 插入数据 转义处理方式


Posted in Python onMarch 02, 2020

最近用pymysql把一些质量不是很高的数据源导入mysql数据库的时候遇到一点问题,主要是遇到像 \ 这样的具有特殊意义的字符时比较难处理。这里有一个解决方案

基本环境

python3
pymysql
linux

问题描述

插入(查询)数据时遇到一些特殊字符会使得程序中断。操作失败。比如 \这样的转义字符

解决方案

插入(查询)之前用 connection.escape(str)处理一下即可

代码示例

import pymongo

sql_pattern = "select * from my_collection where name = %s" #注意,这里直接用%s,不要给%s加引号,因为后面转移过后会自动加引号
name = "xxx\xxx"
name = connection.escape(name)
sql = sql_pattern%name
print(sql) # select * from my_collection where name = 'xxx\\xxx'

with connection.cursor() as cursor:
 try:
  cursor.execute(sql)
 except:
  print(sql)
  pass
 for r in cursor:
  print(r)

补充拓展:利用 pymysql 往数据库插入百万条数据

思路:

先创建一个自定义的数据库表;

生成一个列表,列表中的数据应该和数据库表中的每一列对应;

利用cursor.executemany 批量插入列表中的数据。

注意点:

批量添加数据时,数据格式必须list[tuple(),tuple(),tuple()] 或者tuple(tuple(),tuple(),tuple())

代码解析:

# -*- coding: utf-8 -*-
# Author:benjamin

import pymysql

# 创建连接
conn = pymysql.connect(host='192.168.214.128', port=3306, user='root', passwd='ben123', db='db2')

# 创建游标
cursor = conn.cursor()

def createTable():
 '''
 创建数据库表
 :return:
 '''
 
 try:
  sql = '''
   create table mytable (
   nid int not null auto_increment primary key,
   name varchar(255) not null,
   email varchar(255) not null,
   extra text
   )engine=innodb default charset=utf8
  '''
  cursor.execute(sql)
  conn.commit()
  print('create table ok!')
 except Exception as e:
  print(e)


def myList(value):
 '''
 生成一个列表,[('admin1', 'admin1qq.com', 'hahaadmin1'),...]
 :param value: 自定义的数据量
 :return: new_list
 '''
 new_list = [] # 新建一个空列表用来存储元组数据

 for i in range(1, value + 1):

  name = 'admin'+ str(i)
  email = name + '@qq.com'
  extra = 'I am '+ name

  tup = (name,email,extra) # 构造元组
  new_list.append(tup) # [(),(),()...]

 print("*"*5+"generate list ok"+"*"*5)
 return new_list


def myInsert(newList):
 '''
 数据库插入
 :param newList: 传入的列表数据
 :return:
 '''

 try:
  sql = "insert into mytable(name,email,extra) values(%s,%s,%s)" # 要插入的数据
  cursor.executemany(sql,newList) # 执行插入数据

  conn.commit()
  cursor.close()
  conn.close()
  print('insert ok')
 except Exception as e:
  print(e)


if __name__ == '__main__':

 # 创建数据表
 createTable()
 # 选择要插入的数据量
 value = 1000000 # 定义数据量
 newList = myList(value)
 myInsert(newList)

以上这篇pymysql 插入数据 转义处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python类定义和类继承详解
May 08 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
简单了解python变量的作用域
Jul 30 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
python装饰器相当于函数的调用方式
Dec 27 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python实现简单得递归下降Parser
May 02 Python
python实现字符串和数字拼接
Mar 02 #Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 #Python
基于Python爬取爱奇艺资源过程解析
Mar 02 #Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 #Python
Python处理mysql特殊字符的问题
Mar 02 #Python
新手入门学习python Numpy基础操作
Mar 02 #Python
python中数据库like模糊查询方式
Mar 02 #Python
You might like
PHP XML操作类DOMDocument
2009/12/16 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
jQuery使用方法
2017/02/04 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python 加密的实例详解
2017/10/09 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
学前教育学生自荐信范文
2013/12/31 职场文书
十八大报告观后感
2014/01/28 职场文书
户外活动总结范文
2014/04/30 职场文书
核心价值观演讲稿
2014/05/13 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
森林防火宣传标语
2014/06/27 职场文书
法人授权委托书样本
2014/09/19 职场文书
小学生差生评语
2014/12/29 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书