詳解使用Python實作將資料庫一鍵匯出為Excel表格的方法

高洛峰
發布: 2017-03-24 17:15:12
原創
2590 人瀏覽過

資料庫資料匯出為excel表格,也可以說是很常用的功能了。畢竟不是任何人都懂資料庫操作語句的。
下面先來看看完成的效果吧。
資料來源
詳解使用Python實作將資料庫一鍵匯出為Excel表格的方法
匯出結果
詳解使用Python實作將資料庫一鍵匯出為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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板