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 ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
Aug 08 Python
django中静态文件配置static的方法
May 20 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
Keras搭建自编码器操作
Jul 03 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
python 命令行传参方法总结
May 25 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随机数生成代码与使用实例分析
2011/04/08 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
php封装的smarty类完整实例
2016/10/19 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
Maps Javascript
2007/01/22 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
python中 chr unichr ord函数的实例详解
2017/08/06 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
执行力心得体会
2013/12/31 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
大足石刻导游词
2015/02/02 职场文书
车队安全员岗位职责
2015/02/15 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书