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进程类subprocess的一些操作方法例子
Nov 22 Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
python使用tkinter实现简单计算器
Jan 30 Python
python 检查文件mime类型的方法
Dec 08 Python
浅谈python常用程序算法
Mar 22 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
Python变量作用域LEGB用法解析
Feb 04 Python
python 6行代码制作月历生成器
Sep 18 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 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
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
js验证表单第二部分
2006/11/25 Javascript
Ajax::prototype 源码解读
2007/01/22 Javascript
javascript编程起步(第二课)
2007/02/27 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
python发送伪造的arp请求
2014/01/09 Python
python中元类用法实例
2014/10/10 Python
python函数装饰器用法实例详解
2015/06/04 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
涉外文秘个人求职的自我评价
2013/10/07 职场文书
军训学生自我鉴定
2014/02/12 职场文书
主持人开幕词
2015/01/29 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技