首页 > 解决方案 > 使用 Pandas 将 Pandas 数据帧附加到 Microsoft SQL 表时出现 UnicodeDecodeError

问题描述

我正在使用 python 2 使用 Pandas to_sql 函数将数据帧附加到 Microsoft SQL 表。有趣的是,当我在环境 A 中运行我的代码时,它将数据帧写入表 A,它可以成功写入。但是,当我在将数据帧写入表 B 的环境 B 中运行我的代码时,它将崩溃并显示以下错误消息。

两个环境都具有相同的 python 库和相同的版本。表 A 和 B 都具有相同的编码和架构。两种环境具有相同的设置。

我对这个错误感到困惑。你有什么建议为什么会发生这种情况?谢谢你。

编码

df.to_sql(name=tbl_name, con=con, if_exists='append', index=False)

错误信息

File "D:\Anaconda2\lib\site-packages\pandas\core\generic.py", line 1345, in to_sql
chunksize=chunksize, dtype=dtype)
File "D:\Anaconda2\lib\site-packages\pandas\io\sql.py", line 471, in to_sql
chunksize=chunksize, dtype=dtype)
File "D:\Anaconda2\lib\site-packages\pandas\io\sql.py", line 1151, in to_sql
table.insert(chunksize)
File "D:\Anaconda2\lib\site-packages\pandas\io\sql.py", line 666, in insert
self._execute_insert(conn, keys, chunk_iter)
File "D:\Anaconda2\lib\site-packages\pandas\io\sql.py", line 641, in _execute_insert
conn.execute(self.insert_statement(), data)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py", line 945, in execute
return meth(self, multiparams, params)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\sql\elements.py", line 263, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py", line 1053, in _execute_clauseelement
compiled_sql, distilled_params
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py", line 1189, in _execute_context
context)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py", line 1405, in _handle_dbapi_exception
util.reraise(*exc_info)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\base.py", line 1159, in _execute_context
context)
File "D:\Anaconda2\lib\site-packages\sqlalchemy\engine\default.py", line 467, in do_executemany
cursor.executemany(statement, parameters)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 7: ordinal not in range(128)

标签: sql-serverpython-2.7pandassqlalchemy

解决方案


推荐阅读