L'exportation de données de base de données vers des tableaux Excel peut également être considérée comme une fonction très couramment utilisée. Après tout, tout le monde ne comprend pas les instructions de fonctionnement des bases de données.
Jetons d’abord un coup d’œil à l’effet fini.
Source de données
Exporter les résultats
Dépendances
Puisqu'il est implémenté en Python, vous avez besoin Prise en charge de l'environnement Python
Python2.7.11
Mon environnement Python est 2.7.11. Même si vous utilisez la version 3.5, l’idée est la même.
xlwtpip install xlwt
MySQLdbpip install MySQLdb
Si la méthode ci-dessus échoue, vous pouvez accéder au site officiel de sourceforge pour télécharger la version msi sur Windows ou utilisez le code source. Compilez-le vous-même.
Concernant la base de données
Dans cette expérience, la chose liée à la base de données est en fait la façon d'utiliser Python pour faire fonctionner la base de données, et il y a très peu de points de connaissances. Voici quelques déclarations simples que nous avons utilisées. temps .
Connecter
conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')
Ce qui mérite d'être mentionné ici, c'est l'utilisation du dernier paramètre, sinon les données extraites de la base de données seront tronquées. Concernant le problème des codes tronqués, si vous ne comprenez toujours pas, autant lire cet articleUne brève discussion sur l'encodage, le décodage et les codes tronqués
Obtenir des informations sur les champs
fields = cursor.description
Quant au curseur, il est au cœur du fonctionnement de notre base de données. La particularité d'un curseur est qu'une fois la donnée parcourue, elle ne peut plus être restituée. Mais on peut aussi changer sa position manuellement.
cursor.scroll(0,mode='absolute') pour réinitialiser la position du curseur
Obtenir des données
Obtenir des données est encore plus facile, mais nous devons comprendre dans nos cœurs que l'élément de données est une existence similaire de tableaux dimensionnels. Nous devons faire attention lors de l’obtention de chaque élément de cellule.
results = cursor.fetchall()
Bases d'Excel
De même, ce qui est également expliqué ici est comment utiliser Python pour exploiter des données Excel.
classeur
Nous devons être clairs sur la notion de classeur, qui est la base de notre travail. Correspondant à la feuille ci-dessous, le classeur est le support dont dépend la feuille.
workbook = xlwt.Workbook()
feuille
Toutes nos opérations sont réalisées sur tôle.
sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True)
Pour le classeur et la feuille, si c'est un peu vague. Supposons ceci.
Lorsque nous tenons une comptabilité dans notre vie quotidienne, nous avons tous un livre de comptes, qui est un classeur. Notre comptabilité est enregistrée dans des tableaux les uns après les autres, et ces tableaux sont les feuilles que nous voyons. Il peut y avoir plusieurs tables dans un grand livre, ou une seule table. Ce sera facile à comprendre. :-)
Cas
Regardons un petit cas.
# 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')
Encapsulation
Pour plus de commodité d'utilisation, il est désormais encapsulé dans une fonction facile à appeler.
Après encapsulation
# 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')
Résultats des tests
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!