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编程过程中用单元测试法调试代码的介绍
Apr 02 Python
Python3处理文件中每个词的方法
May 22 Python
python将ansible配置转为json格式实例代码
May 15 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
windows下python和pip安装教程
May 25 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
python numpy中setdiff1d的用法说明
Apr 22 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php strnatcmp()函数的用法总结
2013/11/27 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python如何实现excel数据添加到mongodb
2015/07/30 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Python实现端口检测的方法
2018/07/24 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
简单介绍django提供的加密算法
2019/12/18 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
python 如何设置守护进程
2020/10/29 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
string = null 和string = ''的区别
2013/04/28 面试题
物业管理个人自我评价
2013/11/08 职场文书
批评与自我批评材料
2014/02/15 职场文书
委托协议书范本
2014/04/22 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL