我可以通过 Python csv 模块将 MySQL 表导出到 CSV 文件中,但没有 utf-8 字符。 (例如: ???? 插入的 ąöę 字符)。

表格数据采用 utf-8 格式(phpMyAdmin 让我看到正确的数据)。

我发现了一些信息,在 Python 中,所有数据都应该以 utf-8 解码,然后通过例如 unicodewritter 以 utf-8 编码成 CSV(因为 native csv 模块不正确支持 Unicode)。

我尝试了很多,但没有成功。

问题:是否有任何示例脚本可以在 Python 中将 utf-8 格式的 MySQL 数据库导出为 utf-8 格式的 CSV 文件?

我使用 ubuntu 14.04 并且 mysql.connector 有问题,所以我使用 MySQLdb 和 Gord Thompson 代码:

# -*- coding: utf-8 -*-
import csv
import MySQLdb
from UnicodeSupportForCsv import UnicodeWriter
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#sys.setdefaultencoding('Cp1252')

conn = MySQLdb.Connection(db='sampledb', host='localhost',
user='sampleuser', passwd='samplepass')

crsr = conn.cursor()
crsr.execute("SELECT * FROM rfid")
with open(r'test.csv', 'wb') as csvfile:
    uw = UnicodeWriter(
    csvfile, delimiter=',',
    quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in crsr.fetchall():
    uw.writerow([unicode(col) for col in row])

错误仍然存​​在:UnicodeDecodeError:'utf8'编解码器无法解码位置 2 中的字节 0xf3:无效的继续字节

最佳答案

MySQL 非常擅长转换字符集。但是您需要告诉它使用正确的排序规则建立连接。

默认情况下,它返回如何放入数据库。将所需的字符集添加到连接中:

conn = MySQLdb.Connection(db='sampledb', host='localhost',
user='sampleuser', passwd='samplepass', charset='utf-8', )

这有帮助吗?

关于python - MySQL 通过 Python 脚本以 UTF-8 格式导出到 CSV 文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34599900/

10-11 22:23
查看更多