我需要一个python脚本来从我的数据库XXXX生成一个csv文件。我写thise剧本,但我有一些错误:使用csv从mysql数据库导出数据
import mysql.connector
import csv
filename=open('test.csv','wb')
c=csv.writer(filename)
cnx = mysql.connector.connect(user='XXXXXXX', password='XXXXX',
host='localhost',
database='XXXXX')
cursor = cnx.cursor()
query = ("SELECT `Id_Vendeur`, `Nom`, `Prenom`, `email`, `Num_magasin`, `Nom_de_magasin`, `Identifiant_Filiale`, `Groupe_DV`, `drt_Cartes`.`gain` as 'gain', `Date_Distribution`, `Status_Grattage`, `Date_Grattage` FROM `drt_Cartes_Distribuer`,`drt_Agent`,`drt_Magasin`,`drt_Cartes` where `drt_Cartes_Distribuer`.`Id_Vendeur` = `drt_Agent`.`id_agent` AND `Num_magasin` = `drt_Magasin`.`Numero_de_magasin` AND `drt_Cartes_Distribuer`.`Id_Carte` = `drt_Cartes`.`num_carte`")
cursor.execute(query)
for Id_Vendeur, Nom, Prenom, email, Num_magasin, Nom_de_magasin, Identifiant_Filiale, Groupe_DV, gain, Date_Distribution, Status_Grattage, Date_Grattage in cursor:
c.writerow([Id_Vendeur, Nom, Prenom, email, Num_magasin, Nom_de_magasin, Identifiant_Filiale, Groupe_DV, gain, Date_Distribution, Status_Grattage, Date_Grattage])
cursor.close()
filename.close()
cnx.close()
当我执行命令的phpMyAdmin的它的外观做工非常好,但是从我的壳我得到thise消息
:
# python test.py
Traceback (most recent call last):
File "test.py", line 18, in <module>
c.writerow([Id_Vendeur, Nom, Prenom, email, Num_magasin, Nom_de_magasin, Identifiant_Filiale, Groupe_DV, gain, Date_Distribution, Status_Grattage, Date_Grattage])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xeb' in position 5: ordinal not in range(128)
'\ xeb'是',非ASCII。我想你在管道时会出错。在这种情况下,请参阅https://stackoverflow.com/questions/492483/setting-the-correct-encoding-when-piping-stdout-in-python。 – 4ae1e1
如果您可以访问mysql服务器(ssh?),则可以将数据库转储为CSV(http://stackoverflow.com/a/12041241/1162467)。 此外,如果您复制表格并将引擎设置为CSV,则您的所有数据库表格都只有CSV格式,您可以直接使用这些表格!您只需要截断每个表格并在每次需要更新的CSV时重新插入数据。 –