【发布时间】:2020-01-08 03:07:49
【问题描述】:
我无法使用 python 实现 teradata 连接。我用 python 2.7.13 设置了 anaconda 4.3.1(64 位)。此外,我为 16.20 安装了 teradata odbc 客户端驱动程序,并使用用户 DSN 详细信息配置了 odbc.ini 文件。
我已经尝试了本文中提到的选项 - https://github.com/Teradata/PyTd/issues/43 https://github.com/Teradata/PyTd/issues/89
import teradata
import os, sys
os.environ["ODBCINI"] ="/opt/teradata/client/16.20/odbc_64/odbc.ini"
os.environ["O`enter code here`DBCINST"] ="/opt/teradata/client/16.20/odbc_64/odbcinst.ini"
os.environ["LD_LIBRARY_PATH"] ="/opt/teradata/client/16.20/odbc_64/lib"
udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", odbcLibPath="/opt/teradata/client/16.20/odbc_64/lib/tdataodbc_sb64.so")
session = udaExec.connect(method="odbc", system="tdprod", username="xxxxx", password="yyyyy")
for row in session.execute("SELECT GetQueryBand();"):
print(row)
下面是这个脚本的执行日志和错误信息-
[servername@python]$ python test_teradata.py
Traceback (most recent call last):
File "test_teradata.py", line 17, in
session = udaExec.connect(method="odbc", system="tdprod", username="xxxxx", password="yyyyy")
File "/.../.../anaconda/lib/python2.7/site-packages/teradata/udaexec.py", line 183, in connect
**args))
File "/.../.../anaconda/lib/python2.7/site-packages/teradata/tdodbc.py", line 421, in __init__init(odbcLibPath)
File "/.../.../anaconda/lib/python2.7/site-packages/teradata/tdodbc.py", line 367, in init initFunctionPrototypes()
File "/.../.../anaconda/lib/python2.7/site-packages/teradata/tdodbc.py", line 298, in initFunctionPrototypes prototype(odbc.SQLDrivers, SQLHANDLE, SQLUSMALLINT, PTR(SQLCHAR),
File "/.../.../anaconda/lib/python2.7/ctypes/init.py", line 375, in __getattr__func = self.getitem(name)
File "/.../.../anaconda/lib/python2.7/ctypes/init.py", line 380,in __getitem__func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /opt/teradata/client/16.20/odbc_64/lib/tdataodbc_sb64.so: undefined symbol: SQLDrivers
【问题讨论】:
标签: python-2.7 anaconda odbc teradata