2016-10-05 89 views
1

我想從Teradata實例中提取數據。客戶端代碼在AWS EC2實例上運行Python2.7 +。Python連接到AWS EC2中的Teradata

我安裝unixODBC驅動程序和sudo pip install teradata,但我仍然得到以下異常:

File "/usr/local/lib/python2.7/site-packages/teradata/tdodbc.py", line 369, in determineDriver 
"Available drivers: {}".format(dbType, ",".join(drivers))) 
teradata.api.InterfaceError: ('DRIVER_NOT_FOUND', "No driver found for 'Teradata'. Available drivers: PostgreSQL,MySQL") 

的代碼如下:

import sys 
import teradata 
# my own imports 
td = TeradataClient(DEFAULT_HOSTNAME, DEFAULT_USERNAME, DEFAULT_PASSWORD) 
td.select(query, outfile) 

TeradataClient類我創建了調用Teradata的是如下:

class TeradataClient: 
    def __init__(self, hostname, username, password): 
     self._hostname = hostname 
     self._username = username 
     self._password = password 
     self._udaExec = teradata.UdaExec(appName="MyApp", version="1.0", logConsole=False) 


    def select(self, query, outfile, sep=DEFAULT_SEPARATOR, nullstr=DEFAULT_NULL_STR): 
     with self._udaExec.connect(method="odbc", system=self._hostname, username=self._username, 
              password=self._password) as session: 
      print 'Connection to Teradata established' 
      with open(outfile,'w') as fp: 
       with session.cursor() as cursor: 
        for row in cursor.execute(query): 
         lineparts = [str(x if x!=None else nullstr) for x in row] 
         fp.write('%s\n' %sep.join(lineparts)) 

我該怎麼辦?這是什麼?是否還需要安裝另一個ODBC驅動程序?

+0

system kwarg也許伯特? [鏈接](https://aws.amazon.com/articles/3998) – JC203

+0

已經安裝'boto3'。 – Nik

+0

請張貼嘗試的連接字符串。它可能是一個非常小的語法或缺少的屬性。請添加所有'import'行。 – Parfait

回答

0

聽起來好像您需要安裝Teradata ODBC驅動程序。

在Teradata Developer Exchange上可用。 http://downloads.teradata.com/download/connectivity

+0

我安裝了驅動程序,但沒有顯示在驅動程序列表中。 – Nik

+0

它可能是驅動程序是64位和python是32位(反之亦然)? 這可能會導致驅動程序不能顯示在Windows中,不知道有關Unix/Linux。 –

0

我今天遇到了這個問題,發現它是由最新版本的teradata python包之一引起的。使用pip安裝版本15.10.0.10允許我從RHEL實例進行連接。

+0

謝謝亞歷克斯。我轉而使用REST接口,所以我不必完全處理驅動程序。現在好多了。 – Nik

1

這個固定的問題,對我來說:

export ODBC_VERSION=14.10 
export ODBCINI=/opt/teradata/client/$ODBC_VERSION/odbc_64/odbc.ini 
export ODBCINSTINI=/opt/teradata/client/$ODBC_VERSION/odbc_64/odbcinst.ini 
export LD_LIBRARY_PATH=/opt/teradata/client/$ODBC_VERSION/odbc_64/lib:/opt/teradata/client/$ODBC_VERSION/tdicu/lib64:$LD_LIBRARY_PATH 
export NLSPATH=/opt/teradata/client/$ODBC_VERSION/odbc_64/msg/tdodbc.cat 

注:

  • 變化$ODBC_VERSION需要。
  • 更新/etc/resolv.confudaExec.connect