資料庫資料匯出為excel表格,也可以說是很常用的功能了。畢竟不是任何人都懂資料庫操作語句的。
下面先來看看完成的效果吧。
資料來源
匯出結果
#依賴
#由於是Python實作的,所以需要有Python環境的支援
Python2.7.11
我的Python環境是2.7.11。雖然你用的可能是3.5版本,但是想法是一致的。
xlwtpip install xlwt
MySQLdbpip install MySQLdb
如果上述方式不成功的話,可以到sourceforge官網上去下載windows上的msi版本或使用源碼自行編譯。
資料庫相關
本次試驗,資料庫相關的其實也就是如何使用Python操作資料庫而已,知識點也很少,下述為我們本次用到的一些簡單的語句。
連線
conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')
這裡值得我們一提的就是最後一個參數的使用,不然從資料庫取出的資料就會使亂碼。關於亂碼問題,如果還有不明白的地方,不妨看下這篇文章淺談編碼,解碼,亂碼的問題
獲取字段信息
fields = cursor.description
至於cursor,是我們操作資料庫的核心。遊標的特點就是一旦遍歷過該條數據,便不可返回。但是我們也可以手動的改變其位置。
cursor.scroll(0,mode='absolute')來重置遊標的位置
取得資料
取得資料簡直更是輕而易舉,但是我們必須在心裡明白,資料項是一個類似於二維數組的存在。我們取得每一個cell項的時候應該要注意。
results = cursor.fetchall()
Excel基礎
同樣,這裡講解的也是如何使用Python來操作excel資料。
workbook
工作薄的概念我們必須要明確,其是我們工作的基礎。與下文的sheet相對應,workbook是sheet賴以生存的載體。
workbook = xlwt.Workbook()
sheet
我們所有的操作,都是在sheet上進行的。
sheet = workbook.add_sheet(‘table_message',cell_overwrite_ok=True)
對於workbook 和sheet,如果對此有點模糊。不妨這樣進行假設。
日常生活中記帳的時候,我們都會有一個帳本,這就是workbook。而我們記帳則是記錄在一張張的表格上面,這些表格就是我們看到的sheet。一個帳本上可以有很多表格,也可以只是一個表格。這樣就很容易理解了吧。 :-)
案例
下面來看一個小案例。
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from message') print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果results = cursor.fetchall()# 获取MYSQL里面的数据字段名称fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(r'./readout.xlsx')
封裝
為了使用上的方便,現將其封裝成一個容易呼叫的函數。
封裝之後
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb def export(host,user,password,dbname,table_name,outputpath): conn = MySQLdb.connect(host,user,password,dbname,charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from '+table_name) print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果 results = cursor.fetchall() # 获取MYSQL里面的数据字段名称 fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_'+table_name,cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(outputpath) # 结果测试 if __name__ == "__main__": export('localhost','root','mysql','test','datetest',r'datetest.xlsx')
測試結果
id name date 1 dlut 2016-07-06 2 清华大学 2016-07-03 3 北京大学 2016-07-28 4 Mark 2016-08-20 5 Tom 2016-08-19 6 Jane 2016-08-21
以上是詳解使用Python實作將資料庫一鍵匯出為Excel表格的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!