使用python通过sql查询并导出为.csv文件
-
以下为代码示例
import pymysql
import pandas as pd
class MysqlSave:
def __init__(self):
self.content = pymysql.Connect(
host='0.0.0.0', # mysql的主机ip
port=3306, # 端口
user='root', # 用户名
passwd='password', # 数据库密码
charset='utf8', # 使用字符集
)
self.cursor = self.content.cursor()
def search_and_save(self,sql,csv_file):
"""
导出为csv的函数
:param sql: 要执行的mysql指令
:param csv_file: 导出的csv文件名
:return:
"""
# 执行sql语句
self.cursor.execute(sql)
# 拿到表头
des = self.cursor.description
title = [each[0] for each in des]
# 拿到数据库查询的内容
result_list = []
for each in self.cursor.fetchall():
result_list.append(list(each))
# 保存成dataframe
df_dealed = pd.DataFrame(result_list, columns=title)
# 保存成csv 这个编码是为了防止中文没法保存,index=None的意思是没有行号
df_dealed.to_csv(csv_file, index = None, encoding ='utf_8_sig')
if __name__ == '__main__':
mysql = MysqlSave()
mysql.search_and_save('sql语句;','test.csv') #需要执行获取数据的语句、导出文件的名称