summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2022-06-20 20:41:48 +0200
committerFederico Caselli <cfederico87@gmail.com>2022-06-20 20:41:48 +0200
commite13e13421681768c300eab192cf2b150db9edaa6 (patch)
tree58346afef14358439a2b91b50c52c7d8dc4d2c19 /lib/sqlalchemy/dialects
parent5785b59482498996835dc148fa5f77db36a0705a (diff)
downloadsqlalchemy-e13e13421681768c300eab192cf2b150db9edaa6.tar.gz
Add ability to test using thick mode with oracledb
Change-Id: Iee14750ba20422931bde4d61eaa570af482c7d8b References: #8147
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/oracle/oracledb.py2
-rw-r--r--lib/sqlalchemy/dialects/oracle/provision.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/oracledb.py b/lib/sqlalchemy/dialects/oracle/oracledb.py
index bbe801cd4..67c5b42a5 100644
--- a/lib/sqlalchemy/dialects/oracle/oracledb.py
+++ b/lib/sqlalchemy/dialects/oracle/oracledb.py
@@ -76,7 +76,7 @@ class OracleDialect_oracledb(_OracleDialect_cx_oracle):
**kwargs,
)
- if thick_mode is not None:
+ if self.dbapi is not None and thick_mode is not None:
kw = thick_mode if isinstance(thick_mode, dict) else {}
self.dbapi.init_oracle_client(**kw)
diff --git a/lib/sqlalchemy/dialects/oracle/provision.py b/lib/sqlalchemy/dialects/oracle/provision.py
index 75b7a7aa9..6644c6eab 100644
--- a/lib/sqlalchemy/dialects/oracle/provision.py
+++ b/lib/sqlalchemy/dialects/oracle/provision.py
@@ -16,6 +16,7 @@ from ...testing.provision import run_reap_dbs
from ...testing.provision import set_default_schema_on_connection
from ...testing.provision import stop_test_class_outside_fixtures
from ...testing.provision import temp_table_keyword_args
+from ...testing.provision import update_db_opts
@create_db.for_db("oracle")
@@ -204,3 +205,13 @@ def _oracle_set_default_schema_on_connection(
cursor = dbapi_connection.cursor()
cursor.execute("ALTER SESSION SET CURRENT_SCHEMA=%s" % schema_name)
cursor.close()
+
+
+@update_db_opts.for_db("oracle")
+def _update_db_opts(db_url, db_opts, options):
+ """Set database options (db_opts) for a test database that we created."""
+ if (
+ options.oracledb_thick_mode
+ and sa_url.make_url(db_url).get_driver_name() == "oracledb"
+ ):
+ db_opts["thick_mode"] = True