jaydebeapi
jaydebeapi copied to clipboard
Class com.sybase.jdbc4.jdbc.SybDriver is not found
Hi, I´ve been trying to connect to sybase database with a jar called jconn4 and this program
import jaydebeapi
cnxn = jaydebeapi.connect("com.sybase.jdbc4.jdbc.SybDriver", "jdbc:sybase:Tds:ip:5000/database" ,["user" "pass"],'local_path/jconn4.jar')
cursor = cnxn.cursor() cursor.execute(select * from venta limit 10)
cursor.fetchall()
cursor.close() cnxn.close()
but when I run i get the next error Class com.sybase.jdbc4.jdbc.SybDriver is not found
I use JayDeBeApi==1.2.3 and JPype1-0.7.5
i set java home and execute javac -version getting javac 11.0.7
The question is because happen this? I don´t know if the jar file must be into java home path or if I must to create something like classpath
driver jar = Just keep the Jconn4.jar in a path and keep in variable driver_class = com.sybase.jdbc4.jdbc.SybDriver db = jdbc:sybase:Tds:DB:PORT login = [] (login .append - username and password ) conn = jaydebeapi.connect ( driverclass, db,login, driver jar ) this should work
Ran into a similar problem. I discovered the problem might be with the java version. I swapped to JDK 8 and it seems to work.
Env:
- Java
$ java -version openjdk version "1.8.0_362" OpenJDK Runtime Environment (Zulu 8.68.0.19-CA-macosx) (build 1.8.0_362-b08) OpenJDK 64-Bit Server VM (Zulu 8.68.0.19-CA-macosx) (build 25.362-b08, mixed mode) - Python
$ python --version Python 3.10.9
Solution
- Install jdk 8 via sdkman
sdk install java 8.0.362-zulu
sdk use java 8.0.362-zulu
- Run python to test:
$ python
Python 3.10.9 (v3.10.9:1dd9be6584, Dec 6 2022, 14:37:36) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import jaydebeapi
conn = jaydebeapi.connect("com.sybase.jdbc4.jdbc.SybDriver",
"jdbc:sybase:Tds:<Rest-of-DB-URL>",
["<username>", "<pass>"],
"<absolute-path-to-jar>/.m2/repository/com/sybase/jdbc/jconnect/7.0/jconnect-7.0.jar",)
curs = conn.cursor()
curs.execute("SELECT COUNT(*) FROM dbo.Moo")
curs.fetchall()
# will output data
curs.close()
conn.close()
using jdk.8.0_321 works for me