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 24 Python
浅析python中SQLAlchemy排序的一个坑
Feb 24 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python内建模块struct实例详解
Feb 02 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python进度条的制作代码实例
Aug 31 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
Python双链表原理与实现方法详解
Feb 22 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 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防止SQL注入详解及防范
2013/11/12 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
JS 遮照层实现代码
2010/03/31 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
js中replace的用法总结
2013/12/27 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python命令行解析模块详解
2018/02/01 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Pandas之缺失数据的实现
2021/01/06 Python
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
国培教师自我鉴定
2014/02/12 职场文书
施工安全汇报材料
2014/08/17 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
大学生暑期实践报告
2015/07/13 职场文书
企业法律事务工作总结
2015/08/11 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS