我正在尝试使用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)
以下是我在py27 env
中对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)
我进入每个目录并切换到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驱动程序?
答案 0 :(得分:0)
我也有同样的问题。我使用python teradatasqlalchemy
模块并修改了来自以下位置的连接字符串来克服了这个问题:
create_engine('**teradata**://username:password@teradata_database:22/')
到
create_engine('**teradatasql**://username:password@teradata_database:22/')