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之画圈还不简单吗?
Sep 20 Python
使用Python设置tmpfs来加速项目的教程
Apr 17 Python
Python 装饰器深入理解
Mar 16 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
python3实现随机数
Jun 25 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
python获取命令行参数实例方法讲解
Nov 02 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
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
JS定时关闭窗口的实例
2013/05/22 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
python实现线程池的方法
2015/06/30 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
Python字符串及文本模式方法详解
2020/09/10 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
德语专业求职信
2014/03/12 职场文书
节约用水演讲稿
2014/05/21 职场文书
场地使用证明模板
2014/10/25 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
同学聚会通知短信
2015/04/20 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
暂住证证明
2015/06/19 职场文书
团队拓展训练感想
2015/08/07 职场文书