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代码的打包与发布详解
Jul 30 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
你应该知道的python列表去重方法
Jan 17 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
Python通过调用有道翻译api实现翻译功能示例
Jul 19 Python
python实现图片筛选程序
Oct 24 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php&mysql 日期操作小记
2012/02/27 PHP
PHP发送短信代码分享
2015/08/11 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
详解JS正则replace的使用方法
2016/03/06 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
jQuery实现穿梭框效果
2021/01/19 jQuery
python 字符串格式化代码
2013/03/17 Python
python:动态路由的Flask程序代码
2019/11/22 Python
Python hmac模块使用实例解析
2019/12/24 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
Python自省及反射原理实例详解
2020/07/06 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
视光学毕业生自荐书范文
2014/02/13 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
年终考核实施方案
2014/05/26 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
2014年除四害工作总结
2014/12/06 职场文书
护士医德医风心得体会
2016/01/25 职场文书