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实现查询苹果手机维修进度
Mar 16 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
pandas多级分组实现排序的方法
Apr 20 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
pyinstaller还原python代码过程图解
Jan 08 Python
pytorch进行上采样的种类实例
Feb 18 Python
python打包生成so文件的实现
Oct 30 Python
Python偏函数实现原理及应用
Nov 20 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php如何获取Http请求
2020/04/30 PHP
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python3获取cookie常用三种方案
2020/10/05 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
四年的大学生生活自我评价
2013/12/09 职场文书
酒店节能降耗方案
2014/05/08 职场文书
对照检查剖析材料
2014/09/30 职场文书
2014年终个人总结报告
2015/03/09 职场文书
银行岗位培训心得体会
2016/01/09 职场文书