mysql資料庫匯出xls 自定義

2022-05-05 14:57:08 字數 2115 閱讀 2434

使用python編寫指令碼,一鍵式匯出sql語句執行結果到xls**中,每條語句結果乙個標籤頁

v1,本地執行

檔案列表:

bm.py  主程式

bm_sqlcon.py   資料庫連線,查詢模組

sql.py    初始化資料庫查詢語句

xls.py    寫入xls檔案模組

需要安裝第三方模組

easy_install mysql-connector-python

pip install xlwt

實現了結果格式轉換,時長計算使用百納秒到小時:分:秒:幀。設定單元格日期格式,轉換數字為漢字說明,設定列寬。

語句未做互動

def s_t(bnm):

bnm=int(bnm)

miao=bnm//10**7

#print(miao)

fen=miao//60

xs=miao//3600

dual=(bnm/10**7-miao)*25

dual=round(dual)

miao=miao%60

fen=fen%60

fh=str(xs)+':'+str(fen)+':'+str(miao)+':'+str(dual)

return fh

v2 版本可以考慮增加網頁互動

學到的知識:

1、主函式邏輯:

==》獲取查詢sql語句,存入字典中。可以使用key為中文的字典,後期直接輪詢取key賦值給標籤

==》輪詢語句字典,取出語句傳遞給sqlcon模組,執行查詢,返回結果是乙個包含元組的列表。元組是行資訊

==》結果寫入字典,進行資料預處理,具體處理呼叫不同函式,此時遇到乙個問題是元組內容是不可變,的所以需要先轉成列表,修改完後再轉成元組。(如果就用列表應該也可以)

==》傳給xls模組,設定單元格屬性,加邊框,設定列寬,顯示方式,寫入xls。

2、處理字典資料時,遇到變數型別問題,因為python3是隱式轉換格式的,函式傳遞的數字型的字串被識別成了數字,

在if語句中與字典中的數字型字串進行比較判斷時,無法通過。最後通過強制轉換型別的方式解決。

stat_dict=

for k in stat_dict:

#print(key,k,stat_dict[k])

if(k==str(key)):

returnstat_dict[k]

包括上面的數字轉換函式,也涉及到了型別轉換,數字拼接字串

3、處理字典資料時,因涉及到各種取值 ,各種運算。所以對字典值進行了賦值給另乙個變數,

因為字典的值是列表這樣的高階資料結構,在直接賦值時,採用的為淺copy方式,結果修改變數的值,原始字典竟然會變化。

如此,猜測淺copy的變數,可以向指標一樣使用。

4、處理查詢結果時,因為返回的只有結果,沒有列名,需要手動增加列名。構造乙個含有列名元組的列表,和資料列表進行+的拼接,非常方便。

列名的獲取,本來是通過游標的cursor.description獲取的,結果獲取結果是元組,還有其他資訊,這到還能處理,

但是查詢語句中帶有公式時count(*)這種,就很麻煩,取出的值不是字串,而是位元組碼。經過折騰還是沒有能統一處理,最後手動構建了列名列表實現

5、資料庫操作,可以放到try: except:語句,進行錯誤處理。而且資料的連線資訊,可以寫到字典中,通過可變引數傳遞呼叫。

try:

conn = mysql.connector.connect(**config)

except mysql.connector.error as e:

print('open database failed !{} '.format(e))

6、字典初始化時,可以在每個鍵值對寫一行,不需要特殊換行符\

7、分模組程式設計時,可以在模組中寫入test()函式,寫入除錯資料,對模組進行除錯,引入時,這些是不會執行的

8、可以在語句中加入print()函式,輸出變數的值,來判斷邏輯錯誤,測試好後可以#注釋掉,更換測試條件可以再複製乙份,盡量保留測試記錄

其他知識:

開啟檔案時,可以是用with as 方式,進行錯誤判斷

涉及檔案操作open的都寫入字元編碼,防止中文亂碼

從MySQL匯出XLS資料庫工具 跨平台

這個指令碼是使用perl生成excel xls檔案的工具。依賴一些模組,你可以在linux下使用,產生 xls檔案。使用方式是命令列 引數。非常方便這個指令碼是使用perl生成excel xls檔案的工具。依賴一些模組,你可以在linux下使用,產生 xls檔案。使用方式是命令列 引數。非常方便。u...

ACCESS VBA匯出資料庫表到XLS檔案

目錄 1.前言 2.相關知識 2.1 匯出資料到 查詢 2.2 adox.catalog 2.3 系統表 3.原始碼解析 本例簡析通過access vba查詢語句匯出所有資料庫表到xls檔案。有四種方法,可選其中一種。其中d test.xls表示匯出到d盤,命名為test.xls sheet1是工作...

MySQL匯出匯出資料庫

預設匯出路徑為mysql的內建路徑,因此這裡都加上了 documents 作為路徑。匯出整個資料庫 mysqldump u root p test documents test.sql 匯出資料庫乙個表 mysqldump h hostname u username p password datab...