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 21 Python
Python卸载模块的方法汇总
Jun 07 Python
Python网络编程 Python套接字编程
Sep 13 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
Django REST framework视图的用法
Jan 16 Python
彻底理解Python中的yield关键字
Apr 01 Python
python绘制多个子图的实例
Jul 07 Python
python实现局域网内实时通信代码
Dec 22 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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简单系统查询模块代码打包下载
2008/06/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP队列用法实例
2014/11/05 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
一个实用的php验证码类
2017/07/06 PHP
jQuery 使用个人心得
2009/02/26 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
Python入门篇之文件
2014/10/20 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
超实用的 30 段 Python 案例
2019/10/10 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
软件测试英文面试题
2012/10/14 面试题
建筑毕业生自我鉴定
2013/10/18 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
团组织推优材料
2014/12/29 职场文书
介绍信怎么写
2015/01/30 职场文书