使用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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
python的变量与赋值详细分析
Nov 08 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
Python小进度条显示代码
Mar 05 Python
python多线程与多进程及其区别详解
Aug 08 Python
Python流程控制 if else实现解析
Sep 02 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
如何用python免费看美剧
Aug 11 Python
Python3如何在服务器打印资产信息
Aug 27 Python
Python 列表反转显示的四种方法
Nov 16 Python
Python自动化测试基础必备知识点总结
Feb 07 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
php引用返回与取消引用的详解
2013/06/08 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jcrop基本参数一览
2013/07/16 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Windows下python3.7安装教程
2018/07/31 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
哈弗商学院毕业生求职信
2014/02/26 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
世博会口号
2014/06/20 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
组织生活会发言材料
2014/12/15 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2015年组织部工作总结
2015/04/03 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js