Python teradata Uda Exec проблема подключения ODBC - PullRequest
0 голосов
/ 01 марта 2019

Я использую (Anaconda 3) Python 3.6.3 и установил модуль Python Teradata из https://pypi.python.org/pypi/teradata

Я также создал источник данных ODBC в своей системе и могу использовать его дляуспешно войдите (используя Teradata SQL Assistant) в систему Teradata (на другом сервере).Версия драйвера: 13.00.00.09

Я написал небольшой тестовый код, который не работает с проблемой подключения ODBC:

 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()    

Сообщения об ошибках:

attempting TD connection
Traceback (most recent call last):
File "td.py", line 16, in <module>
with udaExec.connect(method="odbc",system="abc", username="aaaaa",password="xxxxx", driver="Teradata") as connect:
File "C:\teradata-15.10.0.21.tar\teradata-15.10.0.21\teradata\udaexec.py", line 183, in connect
**args))
File "C:\teradata-15.10.0.21.tar\teradata-15.10.0.21\teradata\tdodbc.py", line 450, in __init__
SQL_NTS, None, 0, None, 0)
OSError: exception: access violation writing 0x0000000000000078
Exception ignored in: <bound method OdbcConnection.__del__ of OdbcConnection(sessionno=0)>
Traceback (most recent call last):
File "C:\teradata-15.10.0.21.tar\teradata-15.10.0.21\teradata\tdodbc.py", line 538, in __del__
self.close()
File "C:\teradata-15.10.0.21.tar\teradata-15.10.0.21\teradata\tdodbc.py", line 513, in close
 connections.remove(self)
 ValueError: list.remove(x): x not in list

ItsЯсно, что ошибка с соединением ODBC, но сообщение об ошибке не ясно.Версия драйвера Teradata ODBC - 13, а pypi предоставляет модуль Python Teradata версии 15. Является ли это причиной ошибки?

1 Ответ

0 голосов
/ 01 марта 2019

Я могу решить эту проблему путем (1) установки драйвера ODBC v16 и (2) с использованием DSN = вместо system = в строке подключения.

Похоже, что причиной моей ошибки было несоответствие версий драйвера ODBC, который я использовал ранее.Надеюсь, это кому-нибудь поможет.

...