@@ -85,7 +85,7 @@ def _handle_sql_exception_jython():
85
85
exc_type = InterfaceError
86
86
reraise (exc_type , exc_info [1 ], exc_info [2 ])
87
87
88
- def _jdbc_connect_jython (jclassname , url , driver_args , jars , libs ):
88
+ def _jdbc_connect_jython (jclassname , url , driver_args , jars , libs , java_opts ):
89
89
if _jdbc_name_to_const is None :
90
90
from java .sql import Types
91
91
types = Types
@@ -164,7 +164,7 @@ def _handle_sql_exception_jpype():
164
164
165
165
reraise (exc_type , exc_info [1 ], exc_info [2 ])
166
166
167
- def _jdbc_connect_jpype (jclassname , url , driver_args , jars , libs ):
167
+ def _jdbc_connect_jpype (jclassname , url , driver_args , jars , libs , java_opts ):
168
168
import jpype
169
169
if not jpype .isJVMStarted ():
170
170
args = []
@@ -175,6 +175,9 @@ def _jdbc_connect_jpype(jclassname, url, driver_args, jars, libs):
175
175
if class_path :
176
176
args .append ('-Djava.class.path=%s' %
177
177
os .path .pathsep .join (class_path ))
178
+ if java_opts :
179
+ for arg in java_opts :
180
+ args .append (arg )
178
181
if libs :
179
182
# path to shared libraries
180
183
libs_path = os .path .pathsep .join (libs )
@@ -378,7 +381,7 @@ def TimestampFromTicks(ticks):
378
381
return apply (Timestamp , time .localtime (ticks )[:6 ])
379
382
380
383
# DB-API 2.0 Module Interface connect constructor
381
- def connect (jclassname , url , driver_args = None , jars = None , libs = None ):
384
+ def connect (jclassname , url , driver_args = None , jars = None , libs = None , java_opts = None ):
382
385
"""Open a connection to a database using a JDBC driver and return
383
386
a Connection instance.
384
387
@@ -394,11 +397,17 @@ def connect(jclassname, url, driver_args=None, jars=None, libs=None):
394
397
jars: Jar filename or sequence of filenames for the JDBC driver
395
398
libs: Dll/so filenames or sequence of dlls/sos used as shared
396
399
library by the JDBC driver
400
+ java_opts: List of JVM options with format %option%=%value%.
401
+ Only works with jpype
397
402
"""
398
403
if isinstance (driver_args , string_type ):
399
404
driver_args = [ driver_args ]
400
405
if not driver_args :
401
406
driver_args = []
407
+ if isinstance (java_opts , string_type ):
408
+ java_opts = [ java_opts ]
409
+ if not java_opts :
410
+ java_opts = []
402
411
if jars :
403
412
if isinstance (jars , string_type ):
404
413
jars = [ jars ]
@@ -409,7 +418,7 @@ def connect(jclassname, url, driver_args=None, jars=None, libs=None):
409
418
libs = [ libs ]
410
419
else :
411
420
libs = []
412
- jconn = _jdbc_connect (jclassname , url , driver_args , jars , libs )
421
+ jconn = _jdbc_connect (jclassname , url , driver_args , jars , libs , java_opts )
413
422
return Connection (jconn , _converters )
414
423
415
424
# DB-API 2.0 Connection Object
0 commit comments