summaryrefslogtreecommitdiff
path: root/oslo_db/sqlalchemy/engines.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_db/sqlalchemy/engines.py')
-rw-r--r--oslo_db/sqlalchemy/engines.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/oslo_db/sqlalchemy/engines.py b/oslo_db/sqlalchemy/engines.py
index 25215b9..0e19c18 100644
--- a/oslo_db/sqlalchemy/engines.py
+++ b/oslo_db/sqlalchemy/engines.py
@@ -105,6 +105,14 @@ def _setup_logging(connection_debug=0):
def _extend_url_parameters(url, connection_parameters):
+ # TODO(zzzeek): remove hasattr() conditional when SQLAlchemy 1.4 is the
+ # minimum version in requirements; call update_query_string()
+ # unconditionally
+ if hasattr(url, "update_query_string"):
+ return url.update_query_string(connection_parameters, append=True)
+
+ # TODO(zzzeek): remove the remainder of this method when SQLAlchemy 1.4
+ # is the minimum version in requirements
for key, value in parse.parse_qs(
connection_parameters).items():
if key in url.query:
@@ -118,6 +126,8 @@ def _extend_url_parameters(url, connection_parameters):
if len(value) == 1:
url.query[key] = value[0]
+ return url
+
def _vet_url(url):
if "+" not in url.drivername and not url.drivername.startswith("sqlite"):
@@ -153,7 +163,7 @@ def create_engine(sql_connection, sqlite_fk=False, mysql_sql_mode=None,
url = sqlalchemy.engine.url.make_url(sql_connection)
if connection_parameters:
- _extend_url_parameters(url, connection_parameters)
+ url = _extend_url_parameters(url, connection_parameters)
_vet_url(url)