Używam jaydebeapi
do łączenia się z bazą danych Oracle. Kod wygląda następująco:
host = [address]
port = "1521"
sid = "ctginst1"
database = "oracle"
drivertype = "thin"
uid = [user]
pwd = [pass]
driver_class = "oracle.jdbc.OracleDriver"
driver_file = "ojdbc10.jar"
connection_string="jdbc:{}:{}@{}:{}:{}".format(database, drivertype, host, port, sid)
conn=jaydebeapi.connect(driver_class, connection_string, [uid, pwd], driver_file, )
Jednak to się nie udaje i wyświetla mi błąd:
java.lang.RuntimeException: Class oracle.jdbc.OracleDriver not found
Edycja: przekazując CLASSPATH z lokalizacją .jar podczas uruchamiania maszyny JVM i dopiero wtedy próbując nawiązać połączenie, udało mi się przejść dalej
import jpype
jpype.startJVM(jpype.getDefaultJVMPath(), '-Djava.class.path=%s' % driver_file)
A teraz otrzymuję błąd java.sql.SQLException: Invalid Oracle URL specified
1 odpowiedź
Okej, więc stamtąd najwyraźniej brakowało dwukropka przed „@”. Pełny kod pomyślnego połączenia wygląda następująco:
import jaydebeapi
import jpype
host = host
port = "1521"
sid = "ctginst1"
database = "oracle"
drivertype = "thin"
uid = user
pwd = password
driver_class = "oracle.jdbc.OracleDriver"
driver_file = "C:\ojdbc8.jar"
connection_string="jdbc:{}:{}:@{}:{}:{}".format(database, drivertype, host, port, sid)
jpype.startJVM(jpype.getDefaultJVMPath(), '-Djava.class.path=%s' % driver_file)
conn=jaydebeapi.connect(driver_class, connection_string, [uid, pwd])
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
connect
. Zobacz pypi.org/project/JayDeBeApi/#usage. Zmienna środowiskowaCLASSPATH
nie jest używana w przypadku większości sposobów wykonywania Javy, aJAVA_HOME\lib
zdecydowanie do niej nie należy i nie należy umieszczać losowych bibliotek, które nie są częścią samej JavyJAVA_HOME\lib
.driver_file
powinno być pełną ścieżką do sterownika (lub ewentualnie ścieżką względną do programu w Pythonie), a nie tylko nazwą pliku jar sterownika.ojdbc10.jar
dotyczy Javy 10. Czy masz zainstalowaną Javę 10 lub nowszą? Czy JayDeBeApi działa nawet na Javie 10?