我在运行此代码时遇到问题:
import teradata
udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0",
logConsole=False")
session = udaExec.connect(method="odbc", system="KHD_DEV",
username="User", password="Pass");
for row in session.execute("*some valid query*"):
print(row)
它给了我和错误: 没有找到Teradata'的司机。可用的驱动程序:驱动程序列表。 我认为问题来自使用64位系统,而我的正确ODBC驱动程序是在32位ODBC管理器中。列出的驱动程序来自64位版本的ODBC管理器。
我认为Teradata看到我的系统并检查C:\ Windows \ System32 \ odbc32.dll中我安装了64位版本的驱动程序。但是32位版本在路径下:C:\ Windows \ SysWOW64 \ odbc32.dll。
我尝试了几种不同的方法,但没有一种方法有效:
通过在我的代码中更改udaExec:
udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0",
logConsole=False, odbcLibPath="C:\\Windows\\SysWOW64\\odbc32.dll"
完全相同的错误。
我尝试编辑Teradata包代码:
在tdodbc.py我改变了:在___ init ____(参数)中我试图给他正确的路径:odbcLibPath =" C:\ Windows \ SysWOW64 \ odbc32.dll",但它没有工作。
我认为问题也可能出现在:
def initOdbcLibrary(odbcLibPath=None):
"""Initialize the ODBC Library."""
global odbc
if odbc is None:
if osType == "Windows":
odbc = ctypes.windll.odbc32
但我不知道如何改变这个odbc。
在udaexec.py中,我尝试将连接函数中的这个路径分配给看起来像这样的部分中的odbLibPath变量:
elif method.lower() == METHOD_ODBC:
conn = UdaExecConnection(
self, tdodbc.connect(queryBands=self.queryBands,
odbcLibPath=self.odbcLibPath)
谢谢