升级到 Teradata 16.00 驱动程序后,pyodbc 与 Teradata 的连接无法正常工作
pyodbc connection to Teradata not working after upgrade to Teradata 16.00 driver
我有一个 Windows 应用程序利用 pyodbc 连接到 Teradata。目前,客户端安装了 14.10 或 15.00 驱动程序来执行此连接。使用此(简化的)代码建立连接:
import pyodbc
constr = 'DRIVER={Teradata};DBCNAME='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;'
pyodbc.pooling = False
pyodbc.connect(constr, ANSI=True, autocommit=True)
升级到 16.00 驱动程序后,这不再有效。相反,它会在同一代码上引发以下错误:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
我已经尝试了几种连接字符串变体,但所有 return 都出现相同的错误:
constr = """DRIVER={Teradata};DSN='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;"""
constr = """DRIVER={Teradata};DSN='+dbname+';DATABASE='+dbname+';UID='+uid+';'+pwd+';QUIETMODE=YES;"""
constr = """Provider=Teradata;DBCNAME='+dbname+';DATABASE='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;"""
我需要做什么才能使用 16.00 teradata 驱动程序和 pyodbc?
我遇到了完全相同的问题。这个建议听起来可能很愚蠢,但我的服务器管理员更改了连接字符串的名称并且 Windows SQLDriverConnect 被轰炸了。
在我的工作站上,在 DSN 连接列表中,DSN 名称是 "TDPROD",字符串描述是 "Teradata"。但是,在服务器上,DSN 名称是 "TDPROD",字符串描述是 "Teradata Database ODBC Driver 16.10"。所以,我不得不从这个更新我的 python 函数(请注意,我使用的是 Python 3.6,所以我可以使用 "f" 字符串;如果你使用的是早期版本的 Python 确保使用支持的方法执行字符串插值):
pyodbc.connect(f"""DRIVER=Teradata;
DBCNAME=TDPROD;
UID={user};
PWD={password};
QUIETMODE=YES""",
autocommit=True,
unicode_results=True)
对此:
pyodbc.connect(f"""DRIVER=Teradata Database ODBC Driver 16.10;
DBCNAME=TDPROD;
UID={user};
PWD={password};
QUIETMODE=YES""",
autocommit=True,
unicode_results=True)
希望这至少能为您提供其他一些对我来说不是很明显的东西来检查。
我有一个 Windows 应用程序利用 pyodbc 连接到 Teradata。目前,客户端安装了 14.10 或 15.00 驱动程序来执行此连接。使用此(简化的)代码建立连接:
import pyodbc
constr = 'DRIVER={Teradata};DBCNAME='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;'
pyodbc.pooling = False
pyodbc.connect(constr, ANSI=True, autocommit=True)
升级到 16.00 驱动程序后,这不再有效。相反,它会在同一代码上引发以下错误:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
我已经尝试了几种连接字符串变体,但所有 return 都出现相同的错误:
constr = """DRIVER={Teradata};DSN='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;"""
constr = """DRIVER={Teradata};DSN='+dbname+';DATABASE='+dbname+';UID='+uid+';'+pwd+';QUIETMODE=YES;"""
constr = """Provider=Teradata;DBCNAME='+dbname+';DATABASE='+dbname+';UID='+uid+';PWD='+pwd+';QUIETMODE=YES;"""
我需要做什么才能使用 16.00 teradata 驱动程序和 pyodbc?
我遇到了完全相同的问题。这个建议听起来可能很愚蠢,但我的服务器管理员更改了连接字符串的名称并且 Windows SQLDriverConnect 被轰炸了。
在我的工作站上,在 DSN 连接列表中,DSN 名称是 "TDPROD",字符串描述是 "Teradata"。但是,在服务器上,DSN 名称是 "TDPROD",字符串描述是 "Teradata Database ODBC Driver 16.10"。所以,我不得不从这个更新我的 python 函数(请注意,我使用的是 Python 3.6,所以我可以使用 "f" 字符串;如果你使用的是早期版本的 Python 确保使用支持的方法执行字符串插值):
pyodbc.connect(f"""DRIVER=Teradata;
DBCNAME=TDPROD;
UID={user};
PWD={password};
QUIETMODE=YES""",
autocommit=True,
unicode_results=True)
对此:
pyodbc.connect(f"""DRIVER=Teradata Database ODBC Driver 16.10;
DBCNAME=TDPROD;
UID={user};
PWD={password};
QUIETMODE=YES""",
autocommit=True,
unicode_results=True)
希望这至少能为您提供其他一些对我来说不是很明显的东西来检查。