我正在使用(Anaconda 3)Python 3.6.3,并从https://pypi.python.org/pypi/teradata安装了Teradata的python模块
我还在系统上创建了一个ODBC数据源,并能够使用它成功(使用Teradata SQL Assistant)登录到Teradata系统(在另一台服务器上)。驱动程序版本为13.00.00.09
我写了一个小的测试代码,但由于ODBC连接问题而失败:
new<-gsub("\\d[A-Z]{4,}","",mystring,perl=TRUE)
gsub("\\d{2,}_.*","",new)
#[1] "_IT_GSL_WEL_" "_UTTEW_1_LCL_ABE_GT_" "_UTTEW_3_LCL_ABE_GT_
错误消息:
import Teradata
import pandas as pd
import sys
print("attempting TD connection")
udaExec = teradata.UdaExec(appName="just_td_test", version="1.0", logConsole=False)
#
with udaExec.connect(method="odbc",system="abc", username="aaaaa",password="xxxxx", driver="Teradata") as connect:
print("connection done. querying now...")
query = "select top 10 tablename from dbc.tables;"
df = pd.read_sql(query,connect)
print(df.head())
connect.close()
很明显,错误与ODBC连接有关,但错误消息不明确。 Teradata ODBC驱动程序版本为13,而pypi提供版本15的Teradata python模块。这是否是错误的原因?
答案 0 :(得分:0)
我能够通过以下方式解决问题 (1)安装ODBC驱动程序v16和 (2)在连接字符串中使用DSN =代替system =。
所以看来我的错误原因是我之前使用的ODBC驱动程序版本不匹配。希望对别人有帮助。
答案 1 :(得分:0)
尝试使用另一个Python Teradata库(例如“ teradatasql”)来删除对Driver的依赖。这仅需要主机,用户名和密码参数即可进行连接。