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 08 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
Python unittest单元测试框架总结
Sep 08 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
为什么说Python可以实现所有的算法
Oct 04 Python
python计算auc的方法
Sep 09 Python
python用opencv 图像傅里叶变换
Jan 04 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
Python绘制散乱的点构成的图的方法
Apr 21 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
用PHP生成html分页列表的代码
2007/03/18 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Python 3.8 新功能全解
2019/07/25 Python
python异常处理和日志处理方式
2019/12/24 Python
Python如何批量生成和调用变量
2020/11/21 Python
html5启动原生APP总结
2020/07/03 HTML / CSS
夜大毕业生自我评价分享
2013/11/10 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
企业项目策划书
2014/01/11 职场文书
职业生涯规划书前言
2014/04/15 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
Python开发五子棋小游戏
2022/04/28 Python