Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erklärung, wie Sie mit Python eine Datenbank mit einem Klick in eine Excel-Tabelle exportieren können

Ausführliche Erklärung, wie Sie mit Python eine Datenbank mit einem Klick in eine Excel-Tabelle exportieren können

高洛峰
高洛峰Original
2017-03-24 17:15:122618Durchsuche

Das Exportieren von Datenbankdaten in Excel-Tabellen kann ebenfalls als eine sehr häufig verwendete Funktion bezeichnet werden. Schließlich versteht nicht jeder Datenbankbetriebsanweisungen.
Werfen wir zunächst einen Blick auf den fertigen Effekt.
Datenquelle
Ausführliche Erklärung, wie Sie mit Python eine Datenbank mit einem Klick in eine Excel-Tabelle exportieren können
Ergebnisse exportieren
Ausführliche Erklärung, wie Sie mit Python eine Datenbank mit einem Klick in eine Excel-Tabelle exportieren können
Abhängigkeiten
Da es in Python implementiert ist, benötigen Sie Unterstützung der Python-Umgebung
Python2.7.11
Meine Python-Umgebung ist 2.7.11. Obwohl Sie möglicherweise Version 3.5 verwenden, ist die Idee dieselbe.
xlwtpip install xlwt
MySQLdbpip install MySQLdb
Wenn die obige Methode nicht erfolgreich ist, können Sie die MSI-Version auf der offiziellen Website von SourceForge herunterladen Windows oder verwenden Sie den Quellcode. Kompilieren Sie ihn selbst.
Datenbankbezogen
In diesem Experiment geht es tatsächlich um die Verwendung von Python zum Betreiben der Datenbank, und es gibt nur sehr wenige Wissenspunkte. Im Folgenden finden Sie einige einfache Aussagen, die wir verwendet haben Zeit .
Verbinden
conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')
Erwähnenswert ist hier die Verwendung des letzten Parameters, da sonst die aus der Datenbank entnommenen Daten verstümmelt werden. Was das Problem der verstümmelten Codes angeht: Wenn Sie immer noch etwas nicht verstehen, können Sie genauso gut diesen Artikel lesenEine kurze Diskussion über Kodierung, Decodierung und verstümmelte Codes
Feldinformationen abrufen

fields = cursor.description


Der Cursor ist der Kern unseres Datenbankbetriebs. Das Merkmal eines Cursors besteht darin, dass das Datenelement, sobald es durchlaufen wurde, nicht mehr zurückgegeben werden kann. Wir können seine Position aber auch manuell ändern.
cursor.scroll(0,mode='absolute') zum Zurücksetzen der Cursorposition
Daten abrufen
Daten abrufen ist noch einfacher, aber wir müssen in unserem Herzen verstehen, dass das Datenelement eine ähnliche Existenz hat dimensionale Arrays. Wir sollten bei der Beschaffung jedes Zellelements darauf achten.

results = cursor.fetchall()


Excel-Grundlagen
In ähnlicher Weise wird hier auch erklärt, wie man Python zum Bearbeiten von Excel-Daten verwendet.
Arbeitsbuch
Wir müssen uns über das Konzept des Arbeitsbuchs im Klaren sein, das die Grundlage unserer Arbeit ist. Entsprechend dem untenstehenden Blatt ist die Arbeitsmappe der Träger, von dem das Blatt abhängt.

workbook = xlwt.Workbook()


Blatt
Alle unsere Arbeiten werden auf Blech durchgeführt.
sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True)
Für Arbeitsmappe und Blatt, falls dies etwas vage ist. Nehmen wir das an.
Wenn wir im täglichen Leben Konten führen, haben wir alle ein Kontobuch, das ein Arbeitsbuch ist. Unsere Buchhaltung wird in Tabellen nacheinander erfasst, und diese Tabellen sind die Blätter, die wir sehen. Ein Hauptbuch kann viele oder nur eine Tabelle enthalten. Das wird leicht zu verstehen sein. :-)
Fall
Schauen wir uns einen kleinen Fall an.

# 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')


Kapselung
Zur Vereinfachung der Verwendung ist es jetzt in eine einfach aufzurufende Funktion gekapselt.
Nach der Kapselung

# 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')


Testergebnisse

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


Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie Sie mit Python eine Datenbank mit einem Klick in eine Excel-Tabelle exportieren können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn