python - 如何在 Linux 中连接 Teradata 和 Python?

标签 python odbc teradata pyodbc unixodbc

我正在尝试在 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 上执行的步骤:

  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]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)。

关于python - 如何在 Linux 中连接 Teradata 和 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24283697/

相关文章:

python - 向 Flask 的 app.logger 提供额外信息

python - Tkinter 跟踪和值错误 : invalid literal for int() with base 10: ''

python - 如何在 python jinja 模板中输出 loop.counter?

c# - 为什么在检查空值后从 OdbcDataReader 读取值时会出现 InvalidCastException?

c# - 在 64 位系统上使用 odbc32 导入 DLL

SQL:计算过去 3 个月中每个月都存在的具有特定交易 ID 的帐户

teradata - 无法使用 "tpa start"启动 teradata 数据库

sql - 什么是 Teradata 相当于 Oracle 的 DUAL

python - 如何将所有参数放入 webapp2 中的数据结构(列表/字典/等)

c++ - 访问 DSN 有哪些访问限制