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 相关文章推荐
Python3实战之爬虫抓取网易云音乐的热门评论
Oct 09 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
Python函数参数操作详解
Aug 03 Python
python hook监听事件详解
Oct 25 Python
Django中更改默认数据库为mysql的方法示例
Dec 05 Python
python实现感知器算法(批处理)
Jan 18 Python
Python中一些深不见底的“坑”
Jun 12 Python
Django中create和save方法的不同
Aug 13 Python
flask框架渲染Jinja模板与传入模板变量操作详解
Jan 25 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
使用python实现飞机大战游戏
Mar 23 Python
python Tkinter模块使用方法详解
Apr 07 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
javascript中获取选中对象的类型
2007/04/02 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
2014全国两会大学生学习心得体会
2014/03/10 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
就业推荐表导师评语
2014/12/31 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
合作协议书格式范本
2016/03/21 职场文书