【问题标题】:SqlAlchemy can't find Teradata ODBC driver on RHEL 7SqlAlchemy 在 RHEL 7 上找不到 Teradata ODBC 驱动程序
【发布时间】:2017-04-30 04:11:41
【问题描述】:

我正在尝试使用 SQLAlchemy 连接到我们的 Teradata 环境并执行查询。我使用 Anaconda Python 2.7 环境和 Jupyter 笔记本在 Windows 7 机器上运行脚本。当我将它移到我们的 Linux 服务器并在 Anaconda Python 2.7 环境中运行它时,它不起作用。它抱怨找不到驱动程序 Teradata。我已经以 root 和我的非 root 用户身份运行它。

我正在尝试在服务器上运行的 Jupyter 笔记本中运行它

from sqlalchemy import create_engine
# connect
td_engine = create_engine('teradata://username:password@teradata_database:22/')

# execute sql
sql="SELECT * FROM sometable"
result = td_engine.execute(sql)

Here is the traceback

这是我在 py27 环境中的 RHEL 7 服务器上所做的

conda install sqlalchemy

pip install teradata

pip install sqlalchemy-teradata

yum install unixODBC

我下载了最新的Teradata ODBC Driver for Linux

我解压了文件

tar -zxf tdodbc1510__linux_indep_15.10.01.04-1.tar.gz

这又给了我三个 tar.gz 文件和一个同名的文本文件。

然后我提取每个 tar.gz 文件

tar -zxf tdicu1510__linux_indep.15.10.04-1.tar.gz

tar -zxf tdodbc1510__linux_indep.15.10.01.04-1.tar.gz

tar -zxf TeraGSS_linux-x64_linux_indep.15.10.03.02-1.tar.gz

这将为每个根名称创建一个目录(tdicu1510、tdodbc1510、TeraGSS)

我 cd 进入每个目录并切换到 korn shell

/usr/bin/ksh

对于我安装它们的三个目录中的 rpm

rpm -ihv tdicu1510_linux_x64-15.10.03.02-1.noarch.rpm

rpm -ihv TeraGSS_linux_x64-15.10.03.02-1.noarch.rpm

rpm -ihv tdodbc1510_linux_x64-15.10.03.02-1.noarch.rpm

这将创建一个 /opt/teradata 目录

我将它添加到 /usr/local/etc/odbcinst.ini

[Teradata]
Driver=/opt/teradata/client/15.10/odbc_64/lib/tdata.so
APILevel=CORE
ConnectFunctions=YYY
DriverODBCVer=3.51
SQLLevel=1

我将它添加到 /usr/local/etc/odbc.ini

[ODBC Data Sources]
TDDSN=tdata.so

[ODBC]
InstallDir=/opt/teradata/client/15.10/odbc_64
Trace=0
TraceDll=/opt/teradata/client/15.10/odbc_64/lib/odbctrac.so
TraceFile=/usr/teradata_logs/odbcusr/trace.log
TraceAutoStop=0

[TDDSN]
Driver=/opt/teradata/client/15.10/odbc_64/lib/tdata.so
Description=Teradata database
DBCName=<MachineName or ip>
LastUser=
Username=
Password=
Database=

这是我的 ~/.bashrc

export PATH="/opt/miniconda2/bin:$PATH
export ORACLE_HOME="/usr/lib/oracle/12.1/client64"
export PATH="$PATH:$ORACLE_HOME/bin"
export LD_LIBRARY_PATH="$ORACLE_HOME/lib"
export TNS_ADMIN="$ORACLE_HOME/network/admin"
export TERADATA="/opt/teradata/client/15.10"
export ODBCINI="/opt/teradata/client/15.10/odbc_64/odbc.ini"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$TERADATA/lib64"

echo $LD_LIBRARY_PATH 显示/usr/lib/oracle/12.1/client64/lib:/opt/teradata/client/15.10/lib64

任何想法我做错了什么?为什么 SQLAlchemy 在 Linux 服务器上看不到 Teradata ODBC 驱动程序?

【问题讨论】:

    标签: python linux sqlalchemy odbc teradata


    【解决方案1】:

    我也有同样的问题。我通过使用 python teradatasqlalchemy 模块并从以下位置修改连接字符串来克服这个问题:

    create_engine('**teradata**://username:password@teradata_database:22/')
    

    create_engine('**teradatasql**://username:password@teradata_database:22/')
    

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 2014-07-23
      • 2012-12-05
      • 2020-11-25
      • 2022-06-15
      • 2017-05-18
      • 2015-01-09
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多