java.lang.RuntimeExceptionPyRaisable: java.lang.RuntimeException: класс com.teradata.jdbc.TeraDriver не найден - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь подключиться к базе данных Teradata в Mac 10.14.2, используя Jaydebeapi . Я получаю следующую ошибку. Ранее я сталкивался с проблемой при установке Jaydebeapi . После множества проб и ошибок. Я понизил Python 3.7 до Python 3.6. Ниже приведены код и соответствующая ошибка вывода

Код

import sys
import os
import string
import jaydebeapi
from time import gmtime, strftime
from datetime import datetime, timedelta
case_detail_server ='*******'
amanita_server= '******'

database_case_detail='CASE_DETAILS_APP'
user_case_detail='****'
password_case_detail='!****'
jars= ['/Users/AppleUser/anaconda3/envs/py36/lib/tdgssconfig.jar','/Users/AppleUser/anaconda3/envs/py36/lib/terajdbc4.jar']
jclassname_case_detail='com.teradata.jdbc.TeraDriver'
case_detail_url='jdbc:teradata://xyz/DBS_PORT=1025,TMODE=ANSI,CHARSET=UTF8'

conn_case_detail=jaydebeapi.connect('com.teradata.jdbc.TeraDriver',case_detail_url,{'user': user_case_detail, 'password': password_case_detail},jars)
curs_case_detail = conn_case_detail.cursor()

curs_case_detail.execute("SELECT TOP 100 Case_Id, Case_Type_Desc FROM aca.fact_case_detail ")

Error

java.lang.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class com.teradata.jdbc.TeraDriver not found
---------------------------------------------------------------------------
java.lang.RuntimeExceptionPyRaisable      Traceback (most recent call last)
<ipython-input-59-70953f1fe337> in <module>
      6 case_detail_url='jdbc:teradata:xyz/DBS_PORT=1025,TMODE=ANSI,CHARSET=UTF8'
      7 
----> 8 conn_case_detail=jaydebeapi.connect('com.teradata.jdbc.TeraDriver',case_detail_url,{'user': user_case_detail, 'password': password_case_detail},jars)
      9 curs_case_detail = conn_case_detail.cursor()
     10 
/anaconda3/lib/python3.6/site-packages/jaydebeapi/__init__.py in connect(jclassname, url, driver_args, jars, libs)
    379     else:
    380         libs = []
--> 381     jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs)
    382     return Connection(jconn, _converters)
    383 
/anaconda3/lib/python3.6/site-packages/jaydebeapi/__init__.py in _jdbc_connect_jpype(jclassname, url, driver_args, jars, libs)
    188             return jpype.JArray(jpype.JByte, 1)(data)
    189     # register driver for DriverManager
--> 190     jpype.JClass(jclassname)
    191     if isinstance(driver_args, dict):
    192         Properties = jpype.java.util.Properties
/anaconda3/lib/python3.6/site-packages/jpype/_jclass.py in JClass(name)
     71     jc = _jpype.findClass(name)
     72     if jc is None:
---> 73         raise _RUNTIMEEXCEPTION.PYEXC("Class %s not found" % name)
     74 
     75     return _getClassFor(jc)
java.lang.RuntimeExceptionPyRaisable: java.lang.RuntimeException: Class com.teradata.jdbc.TeraDriver not found

Пожалуйста, помогите. Заранее спасибо! Mi

1 Ответ

0 голосов
/ 16 января 2019

Я перепроверил все имена баз данных и URL. Нашел все было правильно. Затем я заново загрузил драйверы Teradata JDBC отсюда:

https://downloads.teradata.com/download/connectivity/jdbc-driver

jars=['/CorrectPath/tdgssconfig.jar','/CorrectPAth/terajdbc4.jar']

Распаковал и дал новый путь. И обнаружил, что это работает.

Странно! Но я получил решение. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...