1

I'm trying to connect to my database via jaydebeapi and jdbc driver.

Here is my python code:

import jaydebeapi
import jpype


class MyClass:
    # jdbc_driver_path = os.path.join('Library', 'Java', 'Extensions', 'sqlserverjdbc.jar')
    jdbc_driver_path = os.path.join('Library', 'Java', 'Extensions', 'sqljdbc_9.4', 'enu', 'mssql-jdbc-9.4.0.jre16.jar')
    jaydebeapi_args = [
        'com.microsoft.sqlserver.jdbc.SQLServerDriver',
        # 'com.microsoft.jdbc.sqlserver.SQLServerDriver',
        # 'org.hsqldb.jdbcDriver',
        # 'com.mssql.jdbc.Driver',
        # 'com.datavirtuality.dv.jdbc.Driver',
        # os.path.join('Library', 'Java', 'Extensions', 'sqlserverjdbc.jar'),
        # os.path.join('Library', 'Java', 'Extensions', 'sqljdbc_9.4', 'enu', 'mssql-jdbc-9.4.0.jre16.jar'),
        '<host>',
        dict(user='<user>', password='<password>'),
        jdbc_driver_path
    ]

    def __init__(self):
        # jpype.startJVM(classpath=self.jdbc_driver_path)
        connection = jaydebeapi.connect(*self.jaydebeapi_args)

Commented out lines also didn't help. Every time there is this error:

Traceback (most recent call last): File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap self.run() File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/Users/sgalich/Desktop/projects/myproject/myapp/views.py", line 538, in my_function MyClass( File "/Users/sgalich/Desktop/projects/myproject/myapp/views.py", line 199, in init connection = jaydebeapi.connect(*self.jaydebeapi_args) File "/Users/sgalich/Desktop/projects/gdp/env/lib/python3.8/site-packages/jaydebeapi/init.py", line 412, in connect jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs) File "/Users/sgalich/Desktop/projects/myproject/env/lib/python3.8/site-packages/jaydebeapi/init.py", line 221, in _jdbc_connect_jpype jpype.JClass(jclassname) File "/Users/sgalich/Desktop/projects/myproject/env/lib/python3.8/site-packages/jpype/_jclass.py", line 99, in new return _jpype._getClass(jc) TypeError: Class com.microsoft.sqlserver.jdbc.SQLServerDriver is not found

Also I've tried to set a classpath, but no one of these commands didn't help:

java -cp /Library/Java/Extensions/hsqlserverjdbc.jar com.microsoft.sqlserver.jdbc.SQLServerDriver
java -cp /Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar com.microsoft.sqlserver.jdbc.SQLServerDriver
java -cp .:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:com.microsoft.sqlserver.jdbc.SQLServerDriver
export CLASSPATH=.:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:$CLASSPATH
export $CLASSPATH=.:/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar
export $CLASSPATH=/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar:$CLASSPATH
export $CLASSPATH=/Library/Java/Extensions/sqljdbc_9.4/enu/mssql-jdbc-9.4.0.jre16.jar

I've placed in the ~/.bash_profile a variable with the path to the driver folder, but it didn't help. I reinstalled Java, which didn't help either.

How can I make it work?

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
sgalich
  • 178
  • 3
  • 12

1 Answers1

1

jdbc_driver_path didn't have a leading path delimiter so it's interpreted as a path relative to the current path.

Thanks to @AlwaysLearning for the answer!

sgalich
  • 178
  • 3
  • 12