欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例

 更新時(shí)間:2016年12月30日 10:21:19   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Python實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)出為excel表格,也可以說(shuō)是一個(gè)很常用的功能了。畢竟不是任何人都懂?dāng)?shù)據(jù)庫(kù)操作語(yǔ)句的。

下面先來(lái)看看完成的效果吧。

數(shù)據(jù)源

導(dǎo)出結(jié)果

依賴

由于是Python實(shí)現(xiàn)的,所以需要有Python環(huán)境的支持

Python2.7.11

我的Python環(huán)境是2.7.11。雖然你用的可能是3.5版本,但是思想是一致的。

xlwt
pip install xlwt

MySQLdb
pip install MySQLdb

如果上述方式不成功的話,可以到sourceforge官網(wǎng)上去下載windows上的msi版本或者使用源碼自行編譯。

數(shù)據(jù)庫(kù)相關(guān)

本次試驗(yàn),數(shù)據(jù)庫(kù)相關(guān)的其實(shí)也就是如何使用Python操作數(shù)據(jù)庫(kù)而已,知識(shí)點(diǎn)也很少,下述為我們本次用到的一些簡(jiǎn)單的語(yǔ)句。

連接

conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')

這里值得我們一提的就是最后一個(gè)參數(shù)的使用,不然從數(shù)據(jù)庫(kù)中取出的數(shù)據(jù)就會(huì)使亂碼。關(guān)于亂碼問(wèn)題,如果還有不明白的地方,不妨看下這篇文章 淺談編碼,解碼,亂碼的問(wèn)題

獲取字段信息

fields = cursor.description

至于cursor,是我們操作數(shù)據(jù)庫(kù)的核心。游標(biāo)的特點(diǎn)就是一旦遍歷過(guò)該條數(shù)據(jù),便不可返回。但是我們也可以手動(dòng)的改變其位置。

cursor.scroll(0,mode='absolute')來(lái)重置游標(biāo)的位置

獲取數(shù)據(jù)

獲取數(shù)據(jù)簡(jiǎn)直更是輕而易舉,但是我們必須在心里明白,數(shù)據(jù)項(xiàng)是一個(gè)類似于二維數(shù)組的存在。我們獲取每一個(gè)cell項(xiàng)的時(shí)候應(yīng)該注意。

results = cursor.fetchall()

Excel基礎(chǔ)

同樣,這里講解的也是如何使用Python來(lái)操作excel數(shù)據(jù)。

workbook

工作薄的概念我們必須要明確,其是我們工作的基礎(chǔ)。與下文的sheet相對(duì)應(yīng),workbook是sheet賴以生存的載體。

workbook = xlwt.Workbook()

sheet

我們所有的操作,都是在sheet上進(jìn)行的。

sheet = workbook.add_sheet(‘table_message',cell_overwrite_ok=True)

對(duì)于workbook 和sheet,如果對(duì)此有點(diǎn)模糊。不妨這樣進(jìn)行假設(shè)。

日常生活中記賬的時(shí)候,我們都會(huì)有一個(gè)賬本,這就是workbook。而我們記賬則是記錄在一張張的表格上面,這些表格就是我們看到的sheet。一個(gè)賬本上可以有很多個(gè)表格,也可以只是一個(gè)表格。這樣就很容易理解了吧。 :-)

案例

下面看一個(gè)小案例。

# coding:utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/8/20'
# __Desc__ = 從數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)到excel數(shù)據(jù)表中

import xlwt
import MySQLdb

conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8')
cursor = conn.cursor()

count = cursor.execute('select * from message')
print count
# 重置游標(biāo)的位置
cursor.scroll(0,mode='absolute')
# 搜取所有結(jié)果
results = cursor.fetchall()

# 獲取MYSQL里面的數(shù)據(jù)字段名稱
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])

# 獲取并寫入數(shù)據(jù)段信息
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')

封裝

為了使用上的方便,現(xiàn)將其封裝成一個(gè)容易調(diào)用的函數(shù)。

封裝之后

# coding:utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/8/20'
# __Desc__ = 從數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)到excel數(shù)據(jù)表中

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
 # 重置游標(biāo)的位置
 cursor.scroll(0,mode='absolute')
 # 搜取所有結(jié)果
 results = cursor.fetchall()

 # 獲取MYSQL里面的數(shù)據(jù)字段名稱
 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])

 # 獲取并寫入數(shù)據(jù)段信息
 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)


# 結(jié)果測(cè)試
if __name__ == "__main__":
 export('localhost','root','mysql','test','datetest',r'datetest.xlsx')

測(cè)試結(jié)果

id name date
1 dlut 2016-07-06
2 清華大學(xué) 2016-07-03
3 北京大學(xué) 2016-07-28
4 Mark 2016-08-20
5 Tom 2016-08-19
6 Jane 2016-08-21

總結(jié)

回顧一下,本次試驗(yàn)用到了哪些知識(shí)點(diǎn)。

•Python簡(jiǎn)易操作數(shù)據(jù)庫(kù)
•Python簡(jiǎn)易操作Excel
•數(shù)據(jù)庫(kù)取出數(shù)據(jù)亂碼問(wèn)題解決之添加charset=utf-8
•以二維數(shù)組的角度來(lái)處理獲取到的結(jié)果集。

以上這篇Python實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 開(kāi)發(fā)工具通過(guò) agent 代理使用的方法

    Python 開(kāi)發(fā)工具通過(guò) agent 代理使用的方法

    這篇文章主要介紹了Python 開(kāi)發(fā)工具通過(guò) agent 代理使用的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 淺析python多線程中的鎖

    淺析python多線程中的鎖

    這篇文章主要介紹了淺析python多線程中的鎖,鎖由Python的threading模塊提供,并且它最多被一個(gè)線程所持有,當(dāng)一個(gè)線程試圖獲取一個(gè)已經(jīng)鎖在資源上的鎖時(shí),該線程通常會(huì)暫停運(yùn)行,直到這個(gè)鎖被釋放,需要的朋友可以參考下
    2023-07-07
  • 復(fù)習(xí)Python中的字符串知識(shí)點(diǎn)

    復(fù)習(xí)Python中的字符串知識(shí)點(diǎn)

    這篇文章主要介紹了Python中字符串的一些知識(shí)點(diǎn),來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python中的json內(nèi)置庫(kù)詳解

    Python中的json內(nèi)置庫(kù)詳解

    這篇文章主要介紹了Python中的json內(nèi)置庫(kù)詳解,在學(xué)習(xí)做自動(dòng)化測(cè)試的過(guò)程中,python 里有一個(gè)內(nèi)置的 json 庫(kù),必須要學(xué)習(xí)好,json 是用于存儲(chǔ)和交換數(shù)據(jù)的語(yǔ)法,是一種輕量級(jí)的數(shù)據(jù)交換式使用場(chǎng)景,需要的朋友可以參考下
    2023-08-08
  • python調(diào)用文件時(shí)找不到相對(duì)路徑的解決方案

    python調(diào)用文件時(shí)找不到相對(duì)路徑的解決方案

    這篇文章主要介紹了python調(diào)用文件時(shí)找不到相對(duì)路徑的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 深度學(xué)習(xí)中shape[0]、shape[1]、shape[2]的區(qū)別詳解

    深度學(xué)習(xí)中shape[0]、shape[1]、shape[2]的區(qū)別詳解

    本文主要介紹了深度學(xué)習(xí)中shape[0]、shape[1]、shape[2]的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python 如何將integer轉(zhuǎn)化為羅馬數(shù)(3999以內(nèi))

    Python 如何將integer轉(zhuǎn)化為羅馬數(shù)(3999以內(nèi))

    這篇文章主要介紹了Python 將integer轉(zhuǎn)化為羅馬數(shù)(3999以內(nèi))的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 微信 用腳本查看是否被微信好友刪除

    微信 用腳本查看是否被微信好友刪除

    這篇文章主要介紹了微信 用腳本查看是否被微信好友刪除的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Python在實(shí)時(shí)數(shù)據(jù)流處理中集成Flink與Kafka

    Python在實(shí)時(shí)數(shù)據(jù)流處理中集成Flink與Kafka

    隨著大數(shù)據(jù)和實(shí)時(shí)計(jì)算的興起,實(shí)時(shí)數(shù)據(jù)流處理變得越來(lái)越重要,Flink和Kafka是實(shí)時(shí)數(shù)據(jù)流處理領(lǐng)域的兩個(gè)關(guān)鍵技術(shù),下面我們就來(lái)看看如何使用Python將Flink和Kafka集成在一起吧
    2025-03-03
  • Python urllib.request對(duì)象案例解析

    Python urllib.request對(duì)象案例解析

    這篇文章主要介紹了Python urllib.request對(duì)象案例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論