【发布时间】:2019-04-23 17:16:37
【问题描述】:
在将 pypyodbc 与 teradata 连接时,我得到 SQL_INVALID_HANDLE
操作系统 - 红帽 4.4.7-17
Python 版本 - 2.6.6
我没有安装 pypyodbc 的管理权限,所以我下载了模块,设置了 pythonpath 并导入了它。
完成所需的导出以指向 python 模块以找到正确的 libodbc.so
export LD_LIBRARY_PATH=/opt/teradata/client/15.10/odbc_64/lib/
export ODBCINST=/opt/teradata/client/ODBC_64/odbcinst.ini
export ODBCINI=/opt/teradata/client/ODBC_64/odbc.ini
使用以下代码创建数据库连接
pypyodbc.connect("Driver={Teradata};DBCNAME=<DB>;UID=<UNAME>;PWD=<PASS>")
我使用的 odbc 连接字符串是正确的。我已经使用以下方法进行了测试
/opt/teradata/client/15.10/bin/tdxodbc64 -C "Driver={Teradata};DBCNAME=<DB>;UID=<UNAME>;PWD=<PASS>"
**注意:**我没有使用 teradata OOTB python 模块,因为它适用于我无法安装的更高版本的 python。
错误
File "<stdin>", line 1, in <module>
File "<LOCAL_PATH>/pypyodbc.py", line 2421, in __init__
AllocateEnv()
File "<LOCAL_PATH>/pypyodbc.py", line 1000, in AllocateEnv
check_success(SQL_NULL_HANDLE, ret)
File "<LOCAL_PATH>/pypyodbc.py", line 990, in check_success
ctrl_err(SQL_HANDLE_ENV, ODBC_obj, ret, False)
File "<LOCAL_PATH>/pypyodbc.py", line 970, in ctrl_err
raise ProgrammingError('', 'SQL_INVALID_HANDLE')
pypyodbc.ProgrammingError: ('', 'SQL_INVALID_HANDLE')
任何关于此事的指导都是有帮助的
【问题讨论】:
标签: python teradata pyodbc python-2.6 pypyodbc