Explication détaillée de la façon d'utiliser Python pour exporter une base de données dans un tableau Excel en un clic

高洛峰
Libérer: 2017-03-24 17:15:12
original
2567 Les gens l'ont consulté

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
Explication détaillée de la façon dutiliser Python pour exporter une base de données dans un tableau Excel en un clic
Exporter les résultats
Explication détaillée de la façon dutiliser Python pour exporter une base de données dans un tableau Excel en un clic
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
Copier après la connexion


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()
Copier après la connexion


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()
Copier après la connexion


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')
Copier après la connexion


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')
Copier après la connexion


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
Copier après la connexion


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!