python MySQLdb使用教程详解


Posted in Python onMarch 20, 2018

本文主要内容python MySQLdb数据库批量插入insert,更新update的:

1.python MySQLdb的使用,写了一个基类让其他的sqldb继承这样比较方便,数据库的ip, port等信息使用json配置文件

2.常见的查找,批量插入更新

python MySQLdb使用教程详解

下面贴出基类代码:

# _*_ coding:utf-8 _*_
import MySQLdb
import json
import codecs
# 这个自己改一下啊
from utils.JsonUtil import get_json_from_file
def byteify(input):
  """
  the string of json typed unicode to str in python
  This function coming from stack overflow
  :param input: {u'first_name': u'Guido', u'last_name': u'jack'}
  :return:   {'first_name': 'Guido', 'last_name': 'jack'}
  """
  if isinstance(input, dict):
    return {byteify(key): byteify(value)
        for key, value in input.iteritems()}
  elif isinstance(input, list):
    return [byteify(element) for element in input]
  elif isinstance(input, unicode):
    return input.encode('utf-8')
  else:
    return input
def get_json_from_file(filename):
  with open(filename) as jf:
    jsondata = json.load(jf)
  return byteify(jsondata)
class DbBase(object):
  def __init__(self, **kwargs):
    self.db_config_file = kwargs['db_config_file']
    self.config_db(self.db_config_file)
  def config_db(self, db_config_file):
    data = get_json_from_file(db_config_file)
    host = data['host']
    user = data['user']
    pwd = data['pwd']
    db = data['db']
    port = data['port']
    self.tb_audit_mobile = data['tb_audit_mobile']
    self.conn = MySQLdb.connect(host=host, port=port, user=user, passwd=pwd, db=db, charset="utf8", use_unicode=True)
    self.cursor = self.conn.cursor()

子类的示例:

class DbAuditTestService(DbBase):
  def __init__(self, **kwargs):
    super(DbAuditTestService, self).__init__(**kwargs)
  def getAdTestURl(self, beg, end):
    sql = """select url, source from tb_name where create_date BETWEEN '%s' and '%s' """ % (beg, end)
    self.cursor.execute(sql)
    res = [row for row in self.cursor]
    return res
  def insert(self, lst_row):
  """batch insert, use ignore 避免索引唯一问题"""
    try:
      insert_sql = 'INSERT ignore INTO tb_ms_mobile_report_test (appid, source) VALUES (%s, %s)'
      self.cursor.executemany(insert_sql, lst_row)
      self.conn.commit()
    except MySQLdb.OperationalError as e:
      logger.info('%s' % e)
      self.cursor.close()
      self.conn.close()
      self.config_db(self.db_config_file)
  def update_ip_info(self, ip_info):
    """
    batch update 
      [[voilate_right_rate, ip]]
    :param ip_info:
    :return:
    """
    query = """
        update tb_ms_audit_ip_info set
        ip_right_rate=%s
        where submit_ip=%s """
    self.cursor.executemany(query, ip_info)
    self.conn.commit()
def insert_all():
"""批量操作的示例"""
  db_audit = DbAuditService(db_config_file='../config/mysql_police_audit.json')
  size = db_audit.count()
  db_audit_test = DbAuditTestService(db_config_file='../config/mysql_local_audit.json')
  batch_size = 2000
  for k in xrange(100000, size, batch_size):
    logger.info('query limit %s ~ %s' % (k, batch_size))
    lst_row = db_audit.query_limit(k, batch_size)
    logger.info('convert_rows ')
    lst_row = convert_rows(lst_row)
    db_audit_test.insert(lst_row)

总结

以上所述是小编给大家介绍的python MySQLdb使用教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
用实例解释Python中的继承和多态的概念
Apr 27 Python
Django返回json数据用法示例
Sep 18 Python
Python工程师面试必备25条知识点
Jan 17 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python安装scipy的步骤解析
Sep 28 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
通过python连接Linux命令行代码实例
Feb 18 Python
python相对企业语言优势在哪
Jun 12 Python
用python实现名片管理系统
Jun 18 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
pytorch 实现变分自动编码器的操作
May 24 Python
django中的HTML控件及参数传递方法
Mar 20 #Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 #Python
python如何定义带参数的装饰器
Mar 20 #Python
Python回文字符串及回文数字判定功能示例
Mar 20 #Python
python如何把嵌套列表转变成普通列表
Mar 20 #Python
Python内置函数reversed()用法分析
Mar 20 #Python
shell命令行,一键创建 python 模板文件脚本方法
Mar 20 #Python
You might like
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
JS分割字符串并放入数组的函数
2011/07/04 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
Python闭包函数定义与用法分析
2018/07/20 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
python对Excel的读取的示例代码
2020/02/14 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
大学英语专业求职信
2014/06/21 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
六年级作文之预言作文
2019/10/25 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL