从python 3.6.1转换为3.6.5后,出现“ UnicodeDecodeError:'utf-8'编解码器无法解码字节”

时间:2018-10-31 20:01:14

标签: python python-3.x error-handling

由于迁移到python 3.6.5,数据库查询错误详细信息丢失了,我所看到的只是可怕的UnicodeDecodeError。

如果我切换回python 3.6.1,则在运行相同的python脚本时可以看到错误详细信息。错误示例包括无效的字段名称和查询超时。

我在python 3.7中得到了相同的UnicodeDecodeError。

我正在使用pyodbc建立数据库连接以将数据从SQL Server传输到SQL Server和Oracle。

我故意在源数据库查询中将字段名称更改为不正确的值。当我使用python 3.6.1运行该脚本时,我看到: pyodbc.Error:('',“ []错误:使用...查看的字段未找到'MyBadFieldName'。

使用python 3.6.5,我根本看不到pyodbc错误。相反,我看到了: “ utf-8”编解码器无法解码位置2的字节0xc0:“无效的起始字节”错误。

我的想法是,pyodbc.Error返回的字符串中包含无效的起始字节

尽管如此,我还是应该解码以避免UnicodeDecodeError。

我尝试解码代码中的一些字符串,但一直收到语法错误。因此尝试解码数据库连接。

我的SQL Server排序规则是SQL_Latin1_General_CP1_CI_AS

我看到一些文章建议使用该排序规则进行以下操作: cnxn.setdecoding(pyodbc.SQL_CHAR,encoding ='latin1',to = str) cnxn.setencoding(str,encoding ='latin1')

当我将其包含在python脚本中并使用python 3.6.5运行时,在setdecoding行上出现以下错误: NameError:名称“ pyodbc”未定义 我想我缺少一些库来避免该错误。

有人可以建议我如何解决这个问题吗?

谢谢!

Vern

0 个答案:

没有答案