用python腳本導出mysql數據庫查詢結果到Excel表
阿新 • • 發佈:2018-10-19
oca ret argv address add sftp ... xlwt 需要 最近需要導數據的情況太多,總用跳板機上的navicat工具有點效率低,也覺得挺麻煩的(由於跳板機無法連通外網 所以導出數據文件還得通過sftp傳到本機)
anyway 還是寫個腳本好了。之前寫過一個shell腳本做的定時導出任務,現在試試用python寫下
anyway 還是寫個腳本好了。之前寫過一個shell腳本做的定時導出任務,現在試試用python寫下
主要用到的庫有:
pymysql -- 連數據庫的無需多說
os & sys -- 可能回涉及到工作目錄或者外部傳參
xlwt -- 寫excel
下面就是代碼了,總體還是挺簡單的,主要遇到個字符編碼的問題,改成utf-8就解決了
還有個沒解決掉的問題: select的結果沒有字段名,所以....文件第一行的字段我是手動加進去的 =.=
#!/usr/bin/python # -*- coding: cp936 -*- # security:數據庫相關的敏感參數最好通過傳參形式傳入而非寫入腳本 import pymysql import xlwt import os,sys def dbConnect(dburl): db_user = sys.argv[1] db_pass = sys.argv[2] db_name = raw_input("要使用的數據庫:") db_conn = pymysql.connect(dburl,db_user, db_pass, db_name)# db_name傳參失敗?編碼問題"?" return db_conn def sqlOpt(opt): db_conn = dbConnect("localhost") cur = db.cursor() cur.execute(opt) data = cur.fetchall() db_conn.close() return data def write_to_excel(content): os.chdir("/home/appuser/export_mysql_data/") filename = raw_input("請輸入要保存的文件名,無需後綴:") + ‘.xls‘ wbk = xlwt.Workbook(encoding=‘utf-8‘) test = wbk.add_sheet(‘test‘,cell_overwrite_ok=True) # ?如何獲取列名 fileds = [u‘ID‘,u‘name‘,u‘sex‘,u‘birth‘,u‘department‘,u‘address‘] trans_data = list(content) # 寫入列名 for filed in range(0,len(fileds)): test.write(0,filed,fileds[filed]) for row in range(1,len(trans_data)+1): for col in range(0,len(fileds)): test.write(row,col,str(trans_data[row-1][col])) wbk.save(filename) def run_Task(): sql = raw_input("請輸入sql查詢語句:") result = sqlOpt(sql) write_to_excel(result) run_Task()
用python腳本導出mysql數據庫查詢結果到Excel表