Python – 64位系统上的Teradata软件包和32位ODBCpipe理员

我有一个运行这个代码的问题:

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) 

它给我和错误:没有find“Teradata”的驱动程序。 可用驱动程序:驱动程序列表 。 我认为问题来自于使用64位系统,而我正确的ODBC驱动程序在32位ODBCpipe理员。 列出的驱动程序来自64位版本的ODBCpipe理员。

我认为,Teradata看到我的系统,并检查安装了64位版本的C:\ Windows \ System32 \ odbc32.dll中的驱动程序。 但32位版本是在path下:C:\ Windows \ SysWOW64 \ odbc32.dll。

我尝试了几种不同的方法,但没有一个能够工作:

  1. 通过改变我的代码中的udaExec:

     udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", logConsole=False, odbcLibPath="C:\\Windows\\SysWOW64\\odbc32.dll" 

    完全一样的错误。

  2. 我试图编辑Teradata软件包代码:

    在tdodbc.py我改变了:在___初始化____(参数)我试图给他正确的path: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。

  3. 在udaexec.py中,我尝试将连接函数中的这个path分配给odbLibPathvariables,如下所示:

     elif method.lower() == METHOD_ODBC: conn = UdaExecConnection( self, tdodbc.connect(queryBands=self.queryBands, odbcLibPath=self.odbcLibPath) 

你怎么看? 有没有什么办法可以使它在没有安装驱动程序的64位ODBCpipe理器中工作? 我也试图使包girraffez工作。 还有在安装脚本我需要改变path,它的工作,但后来我有其他问题,所以我宁愿坚持teradata包。

谢谢