我在Teradata Ubuntu中使用Pythonodbc收到非文本错误
`saranya@saranya-XPS-8500:~/Desktop$ python test.py`
追踪(最近一次通话): 文件" test.py",第3行,in 康恩= pyodbc.connect(' DRIVER = {Teradata的}; DBCNAME = **;。UID = *** **; PWD = *****;',ANSI = True,autocommit = True)
pyodbc.Error:(' 632',' [632] 523 630(0)(SQLDriverConnect)')
帖子Pyodbc Issue with Teradata中提供的解决方案没有帮助。
另外, 导出ODBCINI,NLSPATH,LD_LIBRARY_HOME,ODBC_HOME值也无济于事。
任何帮助将不胜感激
答案 0 :(得分:0)
我看到了一个类似的模糊响应,看起来它可能与设置连接时的任何问题有关。在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. ")