如何在Ubuntu中使用Teradata解决pythonodbc问题

如何在Ubuntu中使用Teradata解决pythonodbc问题,ubuntu,teradata,pyodbc,Ubuntu,Teradata,Pyodbc,我在Teradata Ubuntu中遇到Pythonobc的非文本错误 `saranya@saranya-XPS-8500:~/Desktop$ python test.py` 回溯(最近一次呼叫最后一次): 文件“test.py”,第3行,在 conn=pyodbc.connect('DRIVER={Teradata};DBCNAME=.*;UID=****;PWD=****”,ANSI=True,autocommit=True) pyodbc.Error:('632','[632]5236

我在Teradata Ubuntu中遇到Pythonobc的非文本错误

`saranya@saranya-XPS-8500:~/Desktop$ python test.py`
回溯(最近一次呼叫最后一次): 文件“test.py”,第3行,在 conn=pyodbc.connect('DRIVER={Teradata};DBCNAME=.*;UID=****;PWD=****”,ANSI=True,autocommit=True)

pyodbc.Error:('632','[632]523630(0)(SQLDriverConnect)

post中提供的解决方案没有帮助

而且, 导出ODBCINI、NLSPATH、LD_LIBRARY_HOME、ODBC_HOME值也没有帮助


任何帮助都将不胜感激

我看到了一个类似的模糊响应,似乎它可能与建立连接时出现的任何问题有关。在linux机器上工作时,我能够通过设置DSN使其工作。要执行此操作,请在主目录中创建一个文件
~/.odbc.ini
,如下所示:

[ODBC] 
InstallDir=/opt/teradata/client/15.10
Trace=0
TraceDll=/opt/teradata/client/15.10/lib64/odbctrac.so
TraceFile={trace location, ie. /home/yourusername/odbctrace/trace.log}
TraceAutoStop=0

[ODBC Data Sources]
testdsn=tdata.so

[testdsn]
Driver=/opt/teradata/client/15.10/lib64/tdata.so
Description=Teradata database
DBCName={ip address of your database}
LastUser=
Username={your database's username}
Password={your database's password}
Database={database to use}
DefaultDatabase={default database to use}
注意:您必须用您的值填写上面的
{xxx}
。我在linux上使用了teradata odbc驱动程序的默认库安装值

现在,设置此DSN文件后,设置环境变量

export ODBCINI=/home/yourusername/.odbc.ini
然后您应该能够运行脚本

import pyodbc
pyodbc.pooling = False
conn = pyodbc.connect('DSN=testdsn')
更好的是,如果要连接到Teradata,请使用以下设备安装python Teradata模块:

sudo pip install teradata
安装后,可以使用以下脚本创建连接

import teradata
from datetime import *

udaExec = teradata.UdaExec(appName="Generic Name" + 
    datetime.now().strftime("%Y_%m_%d:%H:%M:%S"), version="1.0", 
    configureLogging = True, logConsole=True)
session = udaExec.connect(method="odbc", DSN="testdsn")
通过设置
configureLogging=True
logConsole=True
选项,可以输出其他调试信息

这至少对我有用

错误错误 在编写本文时,Python中的Teradata ODBC驱动程序输出错误的错误消息。如果删除一个存在的表,它会显示:

Error:  (3807, u"[42S02] [Teradata][ODBC Teradata Driver][Teradata Database] Object 'database.table_name' does not exist. ")
Error:  (3803, u"[42S01] [Teradata][ODBC Teradata Driver][Teradata Database] Table 'database.table_name' already exists. ")
如果您创建一个以前不存在的表,它会显示:

Error:  (3807, u"[42S02] [Teradata][ODBC Teradata Driver][Teradata Database] Object 'database.table_name' does not exist. ")
Error:  (3803, u"[42S01] [Teradata][ODBC Teradata Driver][Teradata Database] Table 'database.table_name' already exists. ")