使用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 迭代器和iter()函数详解及实例
Mar 21 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
使用python实现对元素的长截图功能
Nov 14 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
python scrapy重复执行实现代码详解
Dec 28 Python
python中提高pip install速度
Feb 14 Python
Python内存映射文件读写方式
Apr 24 Python
python能做哪些生活有趣的事情
Sep 09 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
python Timer 类使用介绍
Dec 28 Python
Python实现简单得递归下降Parser
May 02 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使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP多进程简单实例小结
2019/11/09 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
js转义字符介绍
2013/11/05 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
es6 symbol的实现方法示例
2019/04/02 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python实现简单日期工具类
2019/04/24 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
新郎父亲婚宴答谢词
2014/01/11 职场文书
门诊手术室工作制度
2014/01/30 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
创业女性典型材料
2014/05/02 职场文书
小学班主任研修日志
2015/11/13 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL