【问题标题】:Teradata pypyodbc SQL_INVALID_HANDLETeradata pypyodbc SQL_INVALID_HANDLE
【发布时间】: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


    【解决方案1】:

    您需要安装一些软件包。你可以使用这个命令:

    sudo yum install unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel
    

    此 wiki 将为您提供帮助。

    https://github.com/mkleehammer/pyodbc/wiki

    【讨论】:

      猜你喜欢
      • 2017-03-26
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多