使用Commcare导出工具导出数据时,数据在Excel文件和SQLite DB中正确导出,但是当我们尝试在 MySql DB
中导出数据时,导出中断并给出以下错误:
UnicodeEncodeError:'latin-1'编解码器不能编码0-3位的字符:序数不在范围内(256)
(请参阅随附的屏幕截图)
将数据正确导入数据库,直到遇到印地语文本。遇到印地语文本后,它会中断该过程并给出错误。
我们了解错误可能是由于Devnagiri文本被插入到数据库中,因此我们尝试通过将所有数据列更改为utf8_unicode_ci
来解决此问题,但问题仍然存在。
我们如何解决这个问题?
答案 0 :(得分:1)
默认的mysqldb连接使用latin-1。根据SqlAlchemy文档,您可以直接在连接字符串中设置连接编码:
http://docs.sqlalchemy.org/en/latest/dialects/mysql.html#unicode
CommCare HQ Export Tool Docs at https://confluence.dimagi.com/display/commcarepublic/CommCare+Data+Export+Tool#CommCareDataExportTool-SQLURLformats
包含此字符串,并建议格式
mysql+pymysql://<username>:<password>@<host>/<database name>?charset=utf8
(在您的情况下pymysql
将为mysqldb
)
你是否在该连接器中包含了charset?如果没有,那应该纠正光标预期的latin-1编码文本的问题。