【问题标题】:How to resolve pythonodbc issue with Teradata in Ubuntu如何在 Ubuntu 中解决 Teradata 的 pythonodbc 问题
【发布时间】:2015-09-28 12:47:30
【问题描述】:

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

`saranya@saranya-XPS-8500:~/Desktop$ python test.py`

Traceback(最近一次调用最后一次): 文件“test.py”,第 3 行,在 conn=pyodbc.connect('DRIVER={Teradata};DBCNAME=...**;UID=*****;PWD=***** ;', ANSI=True, 自动提交=True)

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

Pyodbc Issue with Teradata 帖子中提供的解决方案没有帮助。

另外, 导出 ODBCINI、NLSPATH、LD_LIBRARY_HOME、ODBC_HOME 值也无济于事。

任何帮助将不胜感激

【问题讨论】:

    标签: ubuntu teradata pyodbc


    【解决方案1】:

    我看到了类似的模糊响应,似乎它可能与设置连接时出现的任何问题有关。在一个 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=TruelogConsole=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. ")
    

    【讨论】:

      猜你喜欢
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2021-12-08
      • 2015-04-16
      • 2015-07-17
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多