如何在Linux中用Python连接Teradata?
我正在尝试在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上操作的步骤:
- 安装pyodbc
- 安装TeraGSS、tdicu、cliv2、piom、tdodbc
- 运行以下命令:
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 命令来检查)。