需求
在程序运行的过程中,未免会进行数据的交换,在此先简单的理解为数据的导入与导出。由于不同进程使用的数据结构很可能不同,因此进程间进行数据交互时就避免不了不同格式数据的互相转换。其中最常用的就是json格式与csv格式的数据,本文就简单介绍下这两种数据之间的互相转换以及它们与字典之间的互相转换。
字典数据与json格式数据的互相转化
import json
"""
1.将字典中的数据导入到json文件
2.将json文件中的数据导入到字典
"""
d1 = {
'grape':'summer_fruit',
'lemon': 'summer_fruit',
'apple':'allyear_fruit',
'orange':'allyear_fruit'
}
with open('./fruit.json', 'w+', encoding='utf-8') as f:
json.dump(d1, f, indent=1)
# print(f)
with open('./fruit.json', 'r+') as e:
d2 = dict(json.load(e))
print(d2)
字典数据与csv格式数据的互相转化
import csv
"""
1.将字典中的数据导入到csv文件
2.将csv中的数据导入到字典
"""
d1 = {
'grape':'summer_fruit',
'lemon': 'summer_fruit',
'apple':'allyear_fruit',
'orange':'allyear_fruit'
}
with open('./fruit.csv', 'w+', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(d1.items())
with open('./fruit.csv', 'r+', encoding='utf-8', newline='') as e:
reader = csv.reader(e)
d2 = dict(reader)
print(d2)
json与csv格式的互相转化
import json
import csv
"""
1.json转化成csv
2.csv转换成json
"""
json_file = './fruit.json'
dest_file = './test.csv'
with open(json_file, 'r+', encoding='utf-8') as f:
x = dict(json.load(f))
# print(x)
with open(dest_file, 'w+', encoding='utf-8', newline='') as e:
writer = csv.writer(e)
writer.writerows(x.items()) #将数据写入csv文件
with open(dest_file, 'r+') as g:
reader = csv.reader(g)
for x in reader:
# print(x)
print(json.dumps(x)) #csv转换成json数据
数据库数据的导入与提取
from configparser import ConfigParser
import pymysql
import simplejson
import csv
"""
1.将表格中的数据导入数据库
2.查询数据库并将数据导入到表格
"""
data_file = './fruit.csv'
conf_file = './conn.json'
conf = simplejson.load(open(conf_file))
conn = None
cu = None
try:
conn = pymysql.connect(**conf) #解构配置文件,生成连接器对象
cu = conn.cursor()
with open(data_file, 'r+', encoding='utf-8', newline='') as f:
writer = csv.reader(f)
# print(writer)
for line in writer: #遍历表格然后生成sql
sql = "insert into fruit(`name`, `class`) values('{}', '{}')".format(line[0], line[1])
# print(sql)
cu.execute(sql) #将sql执行,导入数据
conn.commit()
except Exception:
conn.rollback()
finally:
with open('./xjw.csv', 'w+', encoding='utf-8', newline='') as e:
sql = "select * from fruit;"
cu.execute(sql)
x = cu.fetchall()
print(type(x), x)
writer = csv.writer(e)
writer.writerows(x)
if cu:
cu.close()
if conn:
conn.close()