在现代数据处理和分析中,将数据从数据库导出到不同的文件格式是一项常见任务。这些文件格式各有优势,例如CSV文件易于在电子表格软件中查看和编辑,而JSON文件则非常适合于Web开发和数据交换。本示例代码将展示如何将数据库中的数据分别导出到CSV文件和JSON文件。通过这个过程,你可以根据具体需求选择合适的数据存储格式,以便进行后续的数据处理和分析。接下来,让我们看看具体的代码实现。
from mysql import connector
import csv,json
con=connector.connect(user='root',password='password',database='ip_messages')
cur=con.cursor()
cur.execute('select * from ip_messages_table')
mysql_result=cur.fetchall()
field_names=[i[0] for i in cur.description]
cur.close()
con.close()
with open('mysql_result.csv','w',newline='') as f:# 打开csv文件并写入时应使用 newline=''。newline=''使得写入后的csv文件中没有空行
writer=csv.writer(f)# csv.writer(csvfile, dialect='excel', **fmtparams),Return a writer object responsible for converting the user's data into delimited strings on the given file-like object. csvfile can be any object with a write() method.
writer.writerow(field_names)# csvwriter.writerow(row),Write the row parameter to the writer's file object. row is arbitrary iterables.
for row in mysql_result:
writer.writerow(row)
with open('ip_messages.json','wb') as f:
f.write('[\n'.encode('utf-8'))
for row in mysql_result:
data_dict={}
for i in range(len(field_names)):
data_dict[field_names[i]]=row[i]
text=json.dumps(data_dict,ensure_ascii=False)+',\n'# 不加红字部分,json文件显示中文的ascii编码。json.dumps 序列化时对中文默认使用ascii编码,输出真正的中文需要指定ensure_ascii=False
f.write(text.encode('utf-8'))
f.seek(-2,2)
f.write('\n]'.encode('utf-8'))