使用csv从mysql数据库导出数据

时间:2015-12-04 09:46:02

标签: python mysql shell csv

我需要一个python脚本来从我的数据库XXXX生成一个csv文件。我写了这个脚本,但我有错误:

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上执行命令时,它看起来工作得很好但是从我的shell我收到了这条消息:

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

2 个答案:

答案 0 :(得分:0)

看起来你正在使用csv for Python 2.7。 Quoting docs

  

注意此版本的csv模块不支持Unicode输入。此外,目前有一些关于ASCII NUL字符的问题。因此,所有输入应为UTF-8或可打印的ASCII以确保安全;请参阅示例部分中的示例。

选项,选择其中之一:

  1. 按照文档链接,转到示例部分,然后根据需要修改您的代码。
  2. 使用带有https://pypi.python.org/pypi/unicodecsv
  3. 等unicode支持的csv数据包

答案 1 :(得分:0)

您从数据库中获取的数据不仅仅是ascii characteres。我建议你按照这个问题的答案中的建议使用'unicodecvs'python模块:How to write UTF-8 in a CSV file