pyodbc 在版本 3+ 上是否存在编码问题?

Does pyodbc have encoding issues on version 3+?

...还是只有我?我阅读了第 2 版已解决的编码问题——我认为这是相关的。我在 MSSQL 服务器上没有问题,只有我们最新的 TeraData 服务器。

python==3.4.3 pyodbc==3.0.10

其他帖子建议我在 connect() 中尝试 'CHARSET=UTF8;ENCODING=UTF8' 的组合。这些在我的 DSN 中,但没有产生可察觉的差异。

cnxn = pyodbc.connect("DSN={TeraData};")
cursor = cnxn.cursor()

cursor.tables()
rows = cursor.fetchall()

In [28]: rows[0].table_name, rows[0].table_name.encode('utf_16_le')

Out[28]: ('扣件陪獐獍獍祳汤', b'AbortListSession')

pyodbc 4.x 显着改进了 Unicode 处理。版本 4.0.7 包含针对 Teradata 的特定修复。如果可能的话,您应该使用最新版本(在撰写此答案时当前为 4.0.26)。

另请参阅 this information in the pyodbc wiki