如何在Linux中用Python连接Teradata?

3 投票
1 回答
7038 浏览
提问于 2025-04-18 10:12

我正在尝试在Linux上用Python连接TD。

我在Windows上已经成功了:

import pyodbc
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<HOST IP>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;')
cursor = conn.cursor()
sql = 'select * from table_name'
cursor.execute(sql)
rows = cursor.fetchall()
conn.close()
print rows

我在Linux上操作的步骤:

  1. 安装pyodbc
  2. 安装TeraGSS、tdicu、cliv2、piom、tdodbc
  3. 运行以下命令:
import pyodbc
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<HOST IP>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;')

pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]找不到数据源名称,也没有指定默认驱动程序 (0) (SQLDriverConnect)')

安装后我是不是漏掉了什么配置步骤?

环境:

Python 2.6.6 (r266:84292, 2012年10月12日, 14:23:48) [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] 在linux2上

1 个回答

2

你传入的字符串作为 DRIVER 需要满足以下条件:

a) 是你 odbcinst.ini 文件中某个驱动的名字,或者

b) 是 ODBC 驱动共享对象的完整路径。

因为你使用的是第一种方法,我建议你运行 odbcinst -j 来找出你的 odbcinst.ini 文件的位置,并检查一下你是否定义了任何驱动。

驱动的部分是以 [MYDRIVERNAME] 开头的,所以你应该有一个以 [Teradata] 开头的部分,并且里面应该包含一个类似于 driver = /path/to/teradata/driver/shared_object 的关键词/值对。如果你已经定义了 [Teradata] 驱动,那么请检查一下 "driver" 关键词指向的共享对象是否存在,是否可以被你读取和执行,并且没有未解决的依赖关系(可以用 ldd 命令来检查)。

撰写回答