From e1039e0849890c6bd10516004c6dab89db1c9111 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 19 Jul 2021 11:36:01 +0100 Subject: Don't pass kwargs to connection.execute() Resolve the following RemovedIn20Warning warning: The connection.execute() method in SQLAlchemy 2.0 will accept parameters as a single dictionary or a single sequence of dictionaries only. Parameters passed as keyword arguments, tuples or positionally oriented dictionaries and/or tuples will no longer be accepted. Change-Id: I44675fce86337696b6494abc03e8058af32686c6 Signed-off-by: Stephen Finucane --- oslo_db/sqlalchemy/provision.py | 10 +++++++--- oslo_db/sqlalchemy/utils.py | 2 +- oslo_db/tests/fixtures.py | 5 ----- oslo_db/tests/sqlalchemy/test_sqlalchemy.py | 3 +-- 4 files changed, 9 insertions(+), 11 deletions(-) (limited to 'oslo_db') diff --git a/oslo_db/sqlalchemy/provision.py b/oslo_db/sqlalchemy/provision.py index f891862..4d1add5 100644 --- a/oslo_db/sqlalchemy/provision.py +++ b/oslo_db/sqlalchemy/provision.py @@ -605,9 +605,11 @@ class PostgresqlBackendImpl(BackendImpl): return bool( engine.scalar( sqlalchemy.text( - "SELECT datname FROM pg_database " - "WHERE datname=:name"), name=ident) + "SELECT datname FROM pg_database WHERE datname=:name" + ), + {'name': ident}, ) + ) def _close_out_database_users(self, conn, ident): """Attempt to guarantee a database can be dropped. @@ -631,7 +633,9 @@ class PostgresqlBackendImpl(BackendImpl): "WHERE usename=current_user AND " "pid != pg_backend_pid() AND " "datname=:dname" - ), dname=ident) + ), + {'dname': ident}, + ) def _random_ident(): diff --git a/oslo_db/sqlalchemy/utils.py b/oslo_db/sqlalchemy/utils.py index 180b07f..90236d5 100644 --- a/oslo_db/sqlalchemy/utils.py +++ b/oslo_db/sqlalchemy/utils.py @@ -1118,7 +1118,7 @@ def get_non_innodb_tables(connectable, skip_tables=('migrate_version', params['database'] = connectable.engine.url.database query = text(query_str) - noninnodb = connectable.execute(query, **params) + noninnodb = connectable.execute(query, params) return [i[0] for i in noninnodb] diff --git a/oslo_db/tests/fixtures.py b/oslo_db/tests/fixtures.py index 561ebc5..ccecccd 100644 --- a/oslo_db/tests/fixtures.py +++ b/oslo_db/tests/fixtures.py @@ -52,11 +52,6 @@ class WarningsFixture(fixtures.Fixture): message=r'The Engine.execute\(\) method is considered legacy .*', category=sqla_exc.SADeprecationWarning) - warnings.filterwarnings( - 'once', - message=r'The connection.execute\(\) method in SQLAlchemy 2.0 .*', - category=sqla_exc.SADeprecationWarning) - warnings.filterwarnings( 'once', message=r'Calling the mapper\(\) function directly outside .*', diff --git a/oslo_db/tests/sqlalchemy/test_sqlalchemy.py b/oslo_db/tests/sqlalchemy/test_sqlalchemy.py index 003a49a..45539c5 100644 --- a/oslo_db/tests/sqlalchemy/test_sqlalchemy.py +++ b/oslo_db/tests/sqlalchemy/test_sqlalchemy.py @@ -324,8 +324,7 @@ class MySQLModeTestCase(db_test_base._MySQLOpportunisticTestCase): def _test_string_too_long(self, value): with self.connection.begin(): - self.connection.execute(self.test_table.insert(), - bar=value) + self.connection.execute(self.test_table.insert(), {'bar': value}) result = self.connection.execute(self.test_table.select()) return result.fetchone().bar -- cgit v1.2.1