使用python将mysql数据库的数据转换为json数据的方法


Posted in Python onJuly 01, 2019

由于产品运营部需要采用第三方个推平台,来推送消息。如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可。

本文将涉及到如何使用Python访问Mysql数据库及读取获取数据(前提需要安装MySQLdb第三方库哦),以及如何将数据转换为json数据,最后保存成文件输出。

代码如下:注释比较详细了。

# coding=utf-8
'''
Created on 2016-10-26
@author: Jennifer
Project:读取mysql数据库的数据,转为json格式
'''
import json,MySQLdb

def TableToJson(): 
  try:
    #1-7:如何使用python DB API访问数据库流程的
    #1.创建mysql数据库连接对象connection
    #connection对象支持的方法有cursor(),commit(),rollback(),close()
    conn = MySQLdb.Connect(host='mysql服务器地址',user='用户名',passwd='密码',db='数据库名称',port=3306,charset = 'utf8') 
    #2.创建mysql数据库游标对象 cursor
    #cursor对象支持的方法有execute(sql语句),fetchone(),fetchmany(size),fetchall(),rowcount,close()
    cur = conn.cursor()
    #3.编写sql
    sql = "SELECT pm.name AS nm,pm.desc AS dc,pm.image_url AS iu,pm.image_type AS it, pm.on_going AS og, pm.type AS mt,pm.pkgName AS pn,pm.apk_url AS du,pm.apkMd5 AS am,pm.minversionCode AS mc,pm.versionCode AS vc,pm.versionName AS vn, pm.signatureMd5 AS sm,pm.source AS se,pm.action AS ao FROM message pm WHERE pm.id = '217'"
    #4.执行sql命令
    #execute可执行数据库查询select和命令insert,delete,update三种命令(这三种命令需要commit()或rollback())
    cur.execute(sql)
    #5.获取数据 
    #fetchall遍历execute执行的结果集。取execute执行后放在缓冲区的数据,遍历结果,返回数据。
    #返回的数据类型是元组类型,每个条数据元素为元组类型:(('第一条数据的字段1的值','第一条数据的字段2的值',...,'第一条数据的字段N的值'),(第二条数据),...,(第N条数据))
    data = cur.fetchall()
    print u'fetchall()返回的数据:',data
    #6.关闭cursor
    cur.close()
    #7.关闭connection
    conn.close()
    jsonData = []
    #循环读取元组数据
    #将元组数据转换为列表类型,每个条数据元素为字典类型:[{'字段1':'字段1的值','字段2':'字段2的值',...,'字段N:字段N的值'},{第二条数据},...,{第N条数据}]
    for row in data: 
      result = {} 
      result['nm'] = row[0] 
      result['dc'] = row[1] 
      result['iu'] = row[2] 
      result['it'] = str(row[3])  
      result['og'] = str(row[4])  
      result['mt'] = str(row[5])  
      result['pn'] = row[6] 
      result['du'] = row[7] 
      result['am'] = row[8] 
      result['mc'] = str(row[9]) 
      result['vc'] = str(row[10]) 
      result['vn'] = row[11] 
      result['sm'] = row[12]
      result['se'] = str(row[13]) 
      result['ao'] = str(row[14])  
      jsonData.append(result)
      print u'转换为列表字典的原始数据:',jsonData
      
  except: 
    print 'MySQL connect fail...' 
  else:
    #使用json.dumps将数据转换为json格式,json.dumps方法默认会输出成这种格式"\u5377\u76ae\u6298\u6263",加ensure_ascii=False,则能够防止中文乱码。
    #JSON采用完全独立于语言的文本格式,事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
    #json.dumps()是将原始数据转为json(其中单引号会变为双引号),而json.loads()是将json转为原始数据。
    jsondatar=json.dumps(jsonData,ensure_ascii=False)
    #去除首尾的中括号
    return jsondatar[1:len(jsondatar)-1]
 
if __name__ == '__main__': 
  #调用函数
  jsonData = TableToJson() 
  print u'转换为json格式的数据:',jsonData 
  #以读写方式w+打开文件,路径前加r,防止字符转义
  f = open(r'D:\getui\getuidata.txt','w+')
  #写数据
  f.write(jsonData)
  #关闭文件 
  f.close()

执行结果:(注代码上方打印的数据为了方便查看数据,可屏蔽,最终json数据会保存在txt文件中)

fetchall()返回的数据: ((u'\u5377\u76ae\u6298\u6263', u'\u5377\u76ae\u6298\u6263', u'http://域名/push/push_d701df5f48c727df46c847fa912993cf.jpg', 3L, 0L, 1L, u'com.juanpi.ui', u'http://域名/apk_1476871813.apk', u'301e757dc6669ecc95ffaaae13bb096d', 14L, 64L, u'4.1.2', u'd1e536a6a60f414700cf3c86f28719c2', 3L, 2L),)
转换为列表字典的原始数据: [{'vc': '64', 'nm': u'\u5377\u76ae\u6298\u6263', 'mc': '14', 'og': '0', 'am': u'301e757dc6669ecc95ffaaae13bb096d', 'iu': u'http://域名/push/push_d701df5f48c727df46c847fa912993cf.jpg', 'it': '3', 'vn': u'4.1.2', 'dc': u'\u5377\u76ae\u6298\u6263', 'mt': '1', 'ao': '2', 'sm': u'd1e536a6a60f414700cf3c86f28719c2', 'du': u'http://域名/apk_1476871813.apk', 'pn': u'com.juanpi.ui', 'se': '3'}]
转换为json格式的数据: {"vc": "64", "nm": "卷皮折扣", "mc": "14", "og": "0", "am": "301e757dc6669ecc95ffaaae13bb096d", "iu": "http:/域名/push/push_d701df5f48c727df46c847fa912993cf.jpg", "it": "3", "vn": "4.1.2", "dc": "卷皮折扣", "mt": "1", "ao": "2", "sm": "d1e536a6a60f414700cf3c86f28719c2", "du": "http://域名/apk_1476871813.apk", "pn": "com.juanpi.ui", "se": "3"}

使用python将mysql数据库的数据转换为json数据的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬虫模拟登录带验证码网站
Jan 22 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
python使用webdriver爬取微信公众号
Aug 31 Python
python一键去抖音视频水印工具
Sep 14 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python+numpy实现矩阵的行列扩展方式
Nov 29 Python
python实现飞船游戏的纵向移动
Apr 24 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python借助with语句实现代码段只执行有限次
Mar 23 Python
Python的property属性详细讲解
Apr 11 Python
python字符串Intern机制详解
Jul 01 #Python
简单了解python单例模式的几种写法
Jul 01 #Python
python如何获取列表中每个元素的下标位置
Jul 01 #Python
Django自定义用户登录认证示例代码
Jun 30 #Python
Python中栈、队列与优先级队列的实现方法
Jun 30 #Python
Python中请不要再用re.compile了
Jun 30 #Python
用python求一个数组的和与平均值的实现方法
Jun 29 #Python
You might like
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
php图片添加水印例子
2016/07/20 PHP
js日期时间补零的小例子
2013/03/05 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
JS中数据结构之栈
2019/01/01 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python批量爬取下载抖音视频
2019/06/17 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
python 实现分组求和与分组累加求和代码
2020/05/18 Python
keras之权重初始化方式
2020/05/21 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
管理学专业个人求职信范文
2013/09/21 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis