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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python lambda表达式filter、map、reduce函数用法解析
Sep 11 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
解决python执行较大excel文件openpyxl慢问题
May 15 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中date与gmdate的区别及默认时区设置
2014/05/12 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
新闻编辑自荐信
2013/11/03 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
党员带头倡议书
2015/04/29 职场文书
电影雨中的树观后感
2015/06/15 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB