实现的功能:通过pymysql连接MySQL数据库,查询所需数据,然后使用pandas写入到csv文件,并且写入包含数据列名。
import sys
import pandas as pd
import pymysql
import time
csv_path=sys.argv[1]
host=sys.argv[2]
user=sys.argv[3]
password=sys.argv[4]
db=sys.argv[5]
# host='59.202.45.105'
# user='lpz_test'
# password='lpz_test'
# db='test'
def getrel(sql):
try:
con = pymysql.connect(host, user, password, db)
cur = con.cursor() # 获取操作游标,也就是开始操作
cur.execute(sql) # 输入要查询的SQL
col_result = cur.description # 获取查询结果的字段描述
rel = cur.fetchall()
# 获取字段名,以列表形式保存
columns = []
for i in range(0, len(col_result)):
columns.append(col_result[i][0])
# print(columns)
cur.close()
con.close()
return rel,columns
except Exception as e:
print(e)
print("!!!!!!!!!!!!!!请检查数据库连接信息!!!!!!!!!!!!!!")
exit(-1)
def getcsv(rel,columns):
data1 = list(map(list, rel))
df = pd.DataFrame(data=data1,columns=columns) # mysql查询的结果为元组,需要转换为列表
df.to_csv(csv_path,index=None)
if __name__ == '__main__':
sql = 'select * from table;'
rel,columns = getrel(sql)
getcsv(rel,columns)