来自CommCare导出工具的MySql的Unicode错误

时间:2016-12-02 05:36:59

标签: mysql excel sqlite export commcare

使用Commcare导出工具导出数据时,数据在Excel文件和SQLite DB中正确导出,但是当我们尝试在 MySql DB 中导出数据时,导出中断并给出以下错误:

  

UnicodeEncodeError:'latin-1'编解码器不能编码0-3位的字符:序数不在范围内(256)

(请参阅随附的屏幕截图)

将数据正确导入数据库,直到遇到印地语文本。遇到印地语文本后,它会中断该过程并给出错误。

我们了解错误可能是由于Devnagiri文本被插入到数据库中,因此我们尝试通过将所有数据列更改为utf8_unicode_ci来解决此问题,但问题仍然存在。

我们如何解决这个问题?

Error Using the Commcare Export Tool for MySQL DB

1 个答案:

答案 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编码文本的问题。