使用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 CSV模块使用实例
Apr 09 Python
详解 Python 读写XML文件的实例
Aug 02 Python
tensorflow获取变量维度信息
Mar 10 Python
Python 16进制与中文相互转换的实现方法
Jul 09 Python
利用Django模版生成树状结构实例代码
May 19 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
django中SMTP发送邮件配置详解
Jul 19 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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 采集程序中常用的函数
2009/12/09 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
JavaScript 学习笔记(四)
2009/12/31 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
Python callable()函数用法实例分析
2018/03/17 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python 字符串只保留汉字的方法
2018/11/16 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
python常量折叠基础知识点讲解
2021/02/28 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
追悼会子女答谢词
2014/01/28 职场文书
志愿者服务感言
2014/02/27 职场文书
项目建议书
2015/02/04 职场文书
新闻通讯稿范文
2015/07/22 职场文书
2019年入党思想汇报
2019/03/25 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP