gpt4 book ai didi

python - 在 MySQL 中使用 pandas 方法 to_sql 时出现另一个 UnicodeEncodeError

转载 作者:可可西里 更新时间:2023-11-01 07:20:00 24 4
gpt4 key购买 nike

我几天前在堆栈溢出上发布了 similar problem (已解决),我不确定这里的礼节是什么,但我正在发一个新帖子。

基本上,当我尝试将 pandas DataFrame 写入 MySQL 数据库时,我遇到了 UnicodeEncodeError。我可以使用以下代码重现错误:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('mysql://root:@localhost/testdb')
df = pd.DataFrame([[u'\u2013',2],['e',4]], index = ['a','b'], columns = ['c','d'])
df.to_sql('data', engine, if_exists = 'replace', index = False)

这里是错误:

UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2013' in position 0: ordinal not in range(256)

这是回溯的最后一行:

C:\Anaconda\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.pyc in do_executemany(self, cursor, statement, parameters, context)
93
94 def do_executemany(self, cursor, statement, parameters, context=None):
---> 95 rowcount = cursor.executemany(statement, parameters)
96 if context is not None:
97 context._rowcount = rowcount

我之前遇到这个问题的时候,是因为pandas.io.sql的一个bug,解决办法是改成a few lines of code .在我遇到 latin-1 编解码器范围之外的字符之前,这种方法一直有效。

你们有什么建议吗?

最佳答案

好吧,在发布我的问题后的一个小时内,我已经弄明白了。也许我应该在发布之前做更多的研究。

问题是sqlalchemy需要配置成使用utf-8编码。上述代码中的解决方案是将第 3 行更改为:

engine = create_engine('mysql://root:@localhost/testdb?charset=utf8', encoding = 'utf-8')

关于python - 在 MySQL 中使用 pandas 方法 to_sql 时出现另一个 UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33442332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com