我可以通过 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/