Python MySQL enconding错误

时间:2017-06-02 00:38:13

标签: python mysql pandas

我在Python中被UnicodeEncodeError卡住了一段时间。

这是我正在做的事情:

  1. 我通过各种分析创建了一个Dataframe。总的来说,数据框有30列,包含多种类型的值(intstringdatetime等。
  2. 我在Azure中创建了一个与远程实例的SSH连接,我已经安装了MySQL。我使用SQLAlchemy创建连接。
  3. 我运行df.to_sql命令并收到以下错误
  4.   

    UnicodeEncodeError:' latin-1'编解码器无法对字符u' \ u2013'进行编码。   位置8:序数不在范围内(256)

    我尝试过这样做,但似乎没有效果。

    engine = create_engine('mysql+pymysql://user:pwd@host:%s/db?charset=utf8' % server.local_bind_port)

    我已阅读here我可以使用u.encode('latin-1', 'replace')。但是,我是否需要执行该操作并遍历每个String列并对其进行编码?或者我还能做些什么呢?

    非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方案。

我创建了一个编码数据中不同字符的函数。

def custom_encoder(x):
    #Check if the value is Unicode
    if type(x)==type(u''):
        return x.encode('utf8','ignore')
    else:
        return x

我循环遍历所有列并编码所有值。在此之后,MySQL允许写入数据。