功能:

  1.Python 脚本将mysql表数据转换成json格式

  2.Python 脚本将json数据转成SQL插入数据库

表数据:

SQL查询:SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;

第一部分:SQL数据--->json数据

--------脚本内容-------sqltojson.py-------------------

#!/usr/bin/env python
#-*- coding: utf8 -*-

import MySQLdb
import json

# 定义查询SQL语句
sql = "SELECT id,NAME,LOCAL,mobile,CreateTime FROM db1.s1;"

# 设置列的别名或者直接用表字段名:(下面的sql含有别名)

# sql="SELECT s.id AS 1_id,s.name AS 2_na,s.local AS 3_lo,s.mobile AS 4_mo,s.CreateTime AS 5_ct FROM db1.s1 s;"

# 定义连接MySQL的登录信息(此处以字典形式)
Loginfo = {'USER':'admin', 'PSWD':'admin', 'HOST':'10.10.60.108', 'PORT':4001}

# Python 连接MySQL
conn=MySQLdb.connect(host=Loginfo['HOST'],user=Loginfo['USER'],passwd=Loginfo['PSWD'],port=Loginfo['PORT'],charset='utf8')
cur=conn.cursor()
cur.execute(sql)                        # 执行SQL查询
data = cur.fetchall()                   # 查询结果给data。如果执行:print data 显示结果:((第一行内容),(第二行内容),(第三行内容),(第四行内容))
fields = cur.description               # 获取查询结果中列的字段名,如果查询SQL中使用别名,此处显示别名。      
cur.close()
conn.close()

# Main
column_list = []                        # 定义字段名的列表
for i in fields:
    column_list.append(i[0])    # 提取字段名,追加到列表中
#print column_list          # 列表显示结果:['id', 'NAME', 'LOCAL', 'mobile', 'CreateTime']

with open('/data/scripts/logdb/json.txt','w+') as f:  # 打开输出结果文件
    for row in data:                   # 一次循环,row代表一行,row以元组的形式显示。
        result = {}                   # 定义Python 字典
        result[column_list[0]] = row[0]          # 将row中的每个元素,追加到字典中。 
        result[column_list[1]] = str(row[1])       # Python字段格式 和json字段格式转换
        result[column_list[2]] = str(row[2])
        result[column_list[3]] = row[3]
        result[column_list[4]] = str(row[4])
        jsondata=json.dumps(result,ensure_ascii=False) # Python的dict --转换成----> json的object
        f.write(jsondata + '\n')             # 写入文件
f.close()

------脚本完结---------------------------

json文件内容:

------显示结果---------------------------

注意:最后输出结果,列的顺序是随机的。

  如果想要顺序输出:1.字段起别名,比如:1_xx,2_xx,3_xx.....然后在在json.dumps中利用:sort_keys=True排序,结果就顺序输出。

例如:

  >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)

    {"a": 0, "b": 0, "c": 0}

第二部分:json格式--->sql语句

------脚本内容------jsontosql.py--------------

#!/usr/bin/env python
#-*- coding: utf8 -*-

import MySQLdb
import json

datalist = []                      # python 列表
with open('/data/scripts/logdb/json.txt','r') as f:
    for line in f:                    # 读取json文件中的行(也就是json的object)   
        datalist.append(json.loads(line))        # 将json的object转成 Python的dict,追加到Python 列表中, 结果都是unicode格式:[{},{},{},{},{}]
for dict in datalist:
    print dict                     # 打印显示 转换后的结果

for dict in datalist:
    dict[u'LOCAL'] = dict[u'LOCAL'].replace('\r\n','\\r\\n').replace("'s","\\'s")  # 将字段中的特殊:回车换行以及's 转换,方便形成sql语句
    sql = "insert into db1.s1 (mobile,NAME,LOCAL,CreateTime,id) values('%s','%s','%s','%s','%s');" % (dict[u'mobile'],dict[u'NAME'],dict[u'LOCAL'],str(dict[u'CreateTime']),dict[u'id'])
    print sql

-----脚本结果------

-------------------

Python mysql表数据和json格式的相互转换的更多相关文章

  1. 提取excel表数据成json格式的以及对图片重命名

    开发那边的需求 1.功夫熊猫以及阿狸布塔故事集都是属于剧集的.意思就是有很多集,这里称他们为tv最下面这几行第一列没名字的都是单集的,这里称它们为mv需要统计所有工作表里面的数据把tv放一个大的jso ...

  2. ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...

  3. python读取excel数据为json格式(兼容xls\xlsx)

    做自动化时需要从excel读取数据: 本文实现将excel文件数据读取为json格式,方便自动化调用 读取xls文件 使用xlrd读取xls文件代码: import xlrd def read_xls ...

  4. MySQL 5.7原生JSON格式支持

    在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较.其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BL ...

  5. 数据转换为json格式的方法

    数据转换为json格式: 如果一张表中存在主外键关系,模板自动生成的类是不可以转换成JSON格式的,此时需要重新写一个类,类前面需加[DataContract],字段前需加[DataMember],实 ...

  6. 利用Flume将MySQL表数据准实时抽取到HDFS

    转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...

  7. jmeter随笔(1)-在csv中数据为json格式的数据不完整

    昨天同事在使用jmeter遇到问题,在csv中数据为json格式的数据,在jmeter中无法完整的取值,小怪我看了下,给出解决办法,其实很简单,我们一起看看,看完了记得分享给你的朋友. 问题现象: 1 ...

  8. C# 任意类型数据转JSON格式(转)

    HOT SUMMER 每天都是不一样,积极的去感受生活 C# 任意类型数据转JSON格式 /// <summary> /// List转成json /// </summary> ...

  9. 关于多条数据转为json格式单次传输的问题 2017.05.27

    数据形式如下: var mycars = [];//定义数组存放多条数据 for(var i=0;i<2;i++){ var jsonData = {};//定义变量存放单条数据 jsonDat ...

随机推荐

  1. CImg的使用,入门

    CImg的使用: const char *imageIN="image.jpg" const char *imageOUT="imgeout.jpg" CImg ...

  2. day15数据类型

    一.浮点数 之前讲过的,有序 : 列表 元组 字符串 数字类 :int flost complex bool 散列累 :集合和字典 浮点数:--包含所有小数 和复数 复数:a +bj   实部和虚部 ...

  3. CentOS6.8部署SVN

    第1章 安装svn服务 1.1 准备操作系统并查看系统环境 [root@localhost ~]# cat /etc/redhat-release CentOS release 6.8 (Final) ...

  4. ASP.NET MVC 使用dataTable(3)--更多选项参考

    ASP.NET MVC 使用dataTable(3)--更多选项参考 jQuery  dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器 ...

  5. Python 使用MySQL

    在导入MySQLdb之前,需要安装MySQLdb模块.使用pip安装,命令如下: pip install MySQL-python 安装成功后,导入MySQLdb模块 import MySQLdb 连 ...

  6. hoj 2739 中国邮局问题

    /*若原图的基图不连通, 或者存在某个点的入度或出度为 0 则无解. 统计所有点的入度出度之差 Di, 对于 Di > 0 的点, 加边(s, i, Di, 0); 对于 Di < 0 的 ...

  7. python3使用SMTP发送邮件

    环境:python3 ,IDE : pycharm 非常奇怪的是,用163发送邮件,如果电脑连校园网发送,会被当成垃圾邮件拒绝 如果用手机开热点就可以正常发送 代码如下 #!/usr/bin/pyth ...

  8. org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception

    RabbitMQ   报出的错! org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException ...

  9. Java 自带的加密类MessageDigest类(加密MD5和SHA)

    Java 自带的加密类MessageDigest类(加密MD5和SHA) - X-rapido的专栏 - CSDN博客 https://blog.csdn.net/xiaokui_wingfly/ar ...

  10. SQL SERVER临时表的使用

    SQL SERVER临时表的使用 drop table #Tmp   --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp(    ID   int IDENTITY (1 ...