我正在尝试在 Linux 中将 TD 与 Python 连接。
我在 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]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
我是否在安装后遗漏了任何配置步骤?
环境:
Python 2.6.6(r266:84292,2012 年 10 月 12 日,14:23:48) linux2 上的 [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]
请您参考如下方法:
你作为DRIVER传递的字符串需要
a) odbcinst.ini 文件中驱动程序的名称或
b) ODBC 驱动程序共享对象的完整路径。
当您使用第一种方法时,我建议您运行 odbcinst -j
来找出您的 odbcinst.ini 文件所在的位置,并检查您是否定义了任何驱动程序。
驱动程序部分以 [MYDRIVERNAME] 开头,因此您应该有一个以 [Teradata] 开头的部分,它应该包含关键字/值对,例如 driver =/path/to/teradata/driver/shared_object。如果您已经定义了一个 [Teradata] 驱动程序,那么请检查使用“驱动程序”关键字指向的共享对象是否存在、您是否可读/可执行并且没有 Unresolved 依赖项(在其上运行 ldd)。