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抓取京东价格分析京东商品价格走势
Jan 09 Python
Python实现基于权重的随机数2种方法
Apr 28 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
Apr 17 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
pycharm 配置远程解释器的方法
Oct 28 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
关于Python中定制类的比较运算实例
Dec 19 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python 使用office365邮箱的示例
Oct 29 Python
python 实现超级玛丽游戏
Nov 25 Python
详解python网络进程
Jun 15 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
php实现Mysql简易操作类
2015/10/11 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
JS中style属性
2006/10/11 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python进阶之尾递归的用法实例
2018/01/31 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python识别验证码图片实例详解
2020/02/17 Python
Django更新models数据库结构步骤
2020/04/01 Python
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
高中体育教学反思
2014/01/24 职场文书
护士毕业实习感言
2014/03/05 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
任命通知范文
2015/04/21 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript