日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql导出数据表 .xls_mysql数据库导出xls-自定义

發(fā)布時(shí)間:2025/3/19 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql导出数据表 .xls_mysql数据库导出xls-自定义 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用python編寫腳本,一鍵式導(dǎo)出sql語(yǔ)句執(zhí)行結(jié)果到xls表格中,每條語(yǔ)句結(jié)果一個(gè)標(biāo)簽頁(yè)

v1,本地運(yùn)行

文件列表:

bm.py? 主程序

bm_sqlcon.py?? 數(shù)據(jù)庫(kù)連接,查詢模塊

sql.py??? 初始化數(shù)據(jù)庫(kù)查詢語(yǔ)句

xls.py??? 寫入xls文件模塊

需要安裝第三方模塊

easy_install mysql-connector-python

pip install xlwt

實(shí)現(xiàn)了結(jié)果格式轉(zhuǎn)換,時(shí)長(zhǎng)計(jì)算使用百納秒到小時(shí):分:秒:幀。設(shè)置單元格日期格式,轉(zhuǎn)換數(shù)字為漢字說(shuō)明,設(shè)置列寬。

語(yǔ)句未做交互

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 版本可以考慮增加網(wǎng)頁(yè)交互

學(xué)到的知識(shí):

1、主函數(shù)邏輯:

==》獲取查詢sql語(yǔ)句,存入字典中。可以使用key為中文的字典,后期直接輪詢?nèi)ey賦值給標(biāo)簽

==》輪詢語(yǔ)句字典,取出語(yǔ)句傳遞給sqlcon模塊,執(zhí)行查詢,返回結(jié)果是一個(gè)包含元組的列表。元組是行信息

==》結(jié)果寫入字典,進(jìn)行數(shù)據(jù)預(yù)處理,具體處理調(diào)用不同函數(shù),此時(shí)遇到一個(gè)問(wèn)題是元組內(nèi)容是不可變,的所以需要先轉(zhuǎn)成列表,修改完后再轉(zhuǎn)成元組。(如果就用列表應(yīng)該也可以)

==》傳給xls模塊,設(shè)定單元格屬性,加邊框,設(shè)置列寬,顯示方式,寫入xls。

2、處理字典數(shù)據(jù)時(shí),遇到變量類型問(wèn)題,因?yàn)閜ython3是隱式轉(zhuǎn)換格式的,函數(shù)傳遞的數(shù)字型的字符串被識(shí)別成了數(shù)字,

在if語(yǔ)句中與字典中的數(shù)字型字符串進(jìn)行比較判斷時(shí),無(wú)法通過(guò)。最后通過(guò)強(qiáng)制轉(zhuǎn)換類型的方式解決。

stat_dict={'20':'編目中','40':'審核中','1000':'完成'}

for k in stat_dict:

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

if(k==str(key)):

return stat_dict[k]

包括上面的數(shù)字轉(zhuǎn)換函數(shù),也涉及到了類型轉(zhuǎn)換,數(shù)字拼接字符串

3、處理字典數(shù)據(jù)時(shí),因涉及到各種取值 ,各種運(yùn)算。所以對(duì)字典值進(jìn)行了賦值給另一個(gè)變量,

因?yàn)樽值涞闹凳橇斜磉@樣的高級(jí)數(shù)據(jù)結(jié)構(gòu),在直接賦值時(shí),采用的為淺copy方式,結(jié)果修改變量的值,原始字典竟然會(huì)變化。

如此,猜測(cè)淺copy的變量,可以向指針一樣使用。

4、處理查詢結(jié)果時(shí),因?yàn)榉祷氐闹挥薪Y(jié)果,沒(méi)有列名,需要手動(dòng)增加列名。構(gòu)造一個(gè)含有列名元組的列表,和數(shù)據(jù)列表進(jìn)行+的拼接,非常方便。

列名的獲取,本來(lái)是通過(guò)游標(biāo)的cursor.description獲取的,結(jié)果獲取結(jié)果是元組,還有其他信息,這到還能處理,

但是查詢語(yǔ)句中帶有公式時(shí)count(*)這種,就很麻煩,取出的值不是字符串,而是字節(jié)碼。經(jīng)過(guò)折騰還是沒(méi)有能統(tǒng)一處理,最后手動(dòng)構(gòu)建了列名列表實(shí)現(xiàn)

5、數(shù)據(jù)庫(kù)操作,可以放到try: except:語(yǔ)句,進(jìn)行錯(cuò)誤處理。而且數(shù)據(jù)的連接信息,可以寫到字典中,通過(guò)可變參數(shù)傳遞調(diào)用。

try:

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

except mysql.connector.Error as e:

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

6、字典初始化時(shí),可以在{中}每個(gè)鍵值對(duì)寫一行,不需要特殊換行符\

7、分模塊編程時(shí),可以在模塊中寫入test()函數(shù),寫入調(diào)試數(shù)據(jù),對(duì)模塊進(jìn)行調(diào)試,引入時(shí),這些是不會(huì)執(zhí)行的

8、可以在語(yǔ)句中加入print()函數(shù),輸出變量的值,來(lái)判斷邏輯錯(cuò)誤,測(cè)試好后可以#注釋掉,更換測(cè)試條件可以再?gòu)?fù)制一份,盡量保留測(cè)試記錄

其他知識(shí):

打開文件時(shí),可以是用with as 方式,進(jìn)行錯(cuò)誤判斷

涉及文件操作open的都寫入字符編碼,防止中文亂碼

總結(jié)

以上是生活随笔為你收集整理的mysql导出数据表 .xls_mysql数据库导出xls-自定义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。