]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Use config.db global opts as defaults for all testing_engine()
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 22 Mar 2017 14:13:15 +0000 (10:13 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 22 Mar 2017 14:42:29 +0000 (10:42 -0400)
Some options need to be passed to engines in all cases,
such as currently the oracle 12516 workaround.   make sure
calls to testing_engine also set up the dictionary with
defaults even if options is passed.    not clear if this affects
other backends yet.

Change-Id: I5a1f7634e4ce5af6fe55dc21a24db6afacd19bb7
(cherry picked from commit 28edc2604a96d5ecd8318232c95a034433aa07d1)

lib/sqlalchemy/dialects/oracle/cx_oracle.py
lib/sqlalchemy/testing/engines.py

index 9b3e3b8a12241185e441c1744d0db5e75943dab8..f85324f84b24d24acd897d8ab08002438daecfa5 100644 (file)
@@ -790,6 +790,8 @@ class OracleDialect_cx_oracle(OracleDialect):
                 if "ORA-12516" in str(err):
                     time.sleep(2)
                     return self.dbapi.connect(*cargs, **cparams)
+                else:
+                    raise
         else:
             return super(OracleDialect_cx_oracle, self).connect(
                 *cargs, **cparams)
index 6bca75fb1f835b9ce785bb73069210bcf2b186b5..dacd5a7afdc20e35ac935b21364ac9c605eb206d 100644 (file)
@@ -226,6 +226,9 @@ def testing_engine(url=None, options=None):
             options = config.db_opts
         else:
             options = {}
+    elif config.db is not None and url.drivername == config.db.url.drivername:
+        default_opt = config.db_opts.copy()
+        default_opt.update(options)
 
     engine = create_engine(url, **options)
     engine._has_events = True   # enable event blocks, helps with profiling