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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
python redis连接 有序集合去重的代码
Aug 04 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
python实现UDP协议下的文件传输
Mar 20 Python
Django实现内容缓存实例方法
Jun 30 Python
Python selenium模块实现定位过程解析
Jul 09 Python
Anaconda的安装与虚拟环境建立
Nov 18 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
使用Python封装excel操作指南
Jan 29 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程序的国际化实现方法(利用gettext)
2011/08/14 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
javascript 特殊字符串
2009/02/25 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python实现按关键字筛选日志文件
2019/12/24 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
python模拟斗地主发牌
2020/04/22 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
土木工程求职信
2014/05/29 职场文书
人大代表选举标语
2014/10/07 职场文书
同意离婚答辩状
2015/05/22 职场文书
学生病假条范文
2015/08/17 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Python中的tkinter库简单案例详解
2022/01/22 Python