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 12 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python运算符重载详解及实例代码
Mar 07 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python程序退出方式小结
Dec 09 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
PyQt5每天必学之组合框
Apr 20 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python求离散序列导数的示例
Jul 10 Python
pywinauto自动化操作记事本
Aug 26 Python
python2和python3哪个使用率高
Jun 23 Python
Python采集爬取京东商品信息和评论并存入MySQL
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 购物车实例(申精)
2009/05/11 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
通过Python实现一个简单的html页面
2020/05/16 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
C语言面试题
2013/05/19 面试题
演讲主持词
2014/03/18 职场文书
2014年党务公开方案
2014/05/08 职场文书
家长给学校的建议书
2014/05/15 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
关于Redis的主从复制及哨兵问题
2022/06/16 Redis