使用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设置socket代理的方法
Jan 14 Python
python类继承用法实例分析
May 27 Python
Python合并字典键值并去除重复元素的实例
Dec 18 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
用python实现百度翻译的示例代码
Mar 09 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
Django实现内容缓存实例方法
Jun 30 Python
Python3读写ini配置文件的示例
Nov 06 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
Python如何telnet到网络设备
Feb 18 Python
Pygame Event事件模块的详细示例
Nov 17 Python
Python必备技巧之函数的使用详解
Apr 04 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使用PDO操作MySQL数据库实例
2014/12/30 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
分享几个超级震憾的图片特效
2012/01/08 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
javascript时间差插件分享
2016/07/18 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
Python subprocess模块学习总结
2014/03/13 Python
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
详解Python中的__new__()方法的使用
2015/04/09 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
大学生护理专业自荐信
2013/10/03 职场文书
毕业生文员求职信
2013/11/03 职场文书
临时租车协议范本
2014/09/23 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电