由于迁移到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