【发布时间】:2018-10-06 01:40:00
【问题描述】:
我正在尝试使用 Python 的 SQLAlchemy 库来查询 Teradata 数据库。我可以使用以下代码创建引擎。
from sqlalchemy import create_engine
td_engine = create_engine('teradata://' + 'usrname' + ':' + 'pswrd' + '@' + 'myOdbcDataSource' + ':22/?charset=UTF8')
但是当我尝试使用引擎时,出现以下错误。
ValueError: 字符 U+590048 不在范围 [U+0000; U+10ffff]
使用与我尝试过的数据库交互的所有功能都会发生此错误。例如,当我尝试执行以下操作时出现此错误。
sqlStr = 'select top 1000 * from myTable;'
result = td_engine.execute(sqlStr)
作为另一个例子,当我尝试执行以下操作时,我得到了同样的错误。
td_engine.table_names('mySchema')
错误之前的日志表明正在使用 ODBC 驱动程序连接到数据库,所以我想知道这是否与我配置 ODBC 驱动程序的方式有关。下面是我位于 Mac 上 /Library/ODBC/ 的 odbc.ini 文件。
[ODBC Data Sources]
myodbca = MySQL ODBC 5.3 ANSI Driver
myodbc = MySQL ODBC 5.3 Unicode Driver
myOdbcDataSource = Teradata Database ODBC Driver 16.20
[myOdbcDataSource]
Driver = /Library/Application Support/teradata/client/16.20/lib/tdataodbc_sbu.dylib
DBCName = myUrl
DefaultDatabase = myDb
UserName = usrname
Password = pswrd
CharacterSet = UTF8
是否有人对如何修复此 Unicode 错误并让 SQL Alchemy Teradata 引擎正常工作有任何想法?提前谢谢你。
【问题讨论】:
-
卸载 Teradata 的 ODBC 驱动程序版本 16.20 并安装 16.10 就可以了。两个驱动程序的下载链接:downloads.teradata.com/download/connectivity/…
标签: python unicode sqlalchemy teradata