diff options
Diffstat (limited to 'oslo_db/sqlalchemy/provision.py')
-rw-r--r-- | oslo_db/sqlalchemy/provision.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/oslo_db/sqlalchemy/provision.py b/oslo_db/sqlalchemy/provision.py index 8d38d43..21eb90a 100644 --- a/oslo_db/sqlalchemy/provision.py +++ b/oslo_db/sqlalchemy/provision.py @@ -518,12 +518,14 @@ class MySQLBackendImpl(BackendImpl): def create_named_database(self, engine, ident, conditional=False): with engine.connect() as conn: if not conditional or not self.database_exists(conn, ident): - conn.exec_driver_sql("CREATE DATABASE %s" % ident) + with conn.begin(): + conn.exec_driver_sql("CREATE DATABASE %s" % ident) def drop_named_database(self, engine, ident, conditional=False): with engine.connect() as conn: if not conditional or self.database_exists(conn, ident): - conn.exec_driver_sql("DROP DATABASE %s" % ident) + with conn.begin(): + conn.exec_driver_sql("DROP DATABASE %s" % ident) def database_exists(self, engine, ident): s = sql.text("SHOW DATABASES LIKE :ident") @@ -581,18 +583,22 @@ class PostgresqlBackendImpl(BackendImpl): def create_named_database(self, engine, ident, conditional=False): with engine.connect().execution_options( - isolation_level="AUTOCOMMIT") as conn: + isolation_level="AUTOCOMMIT", + ) as conn: if not conditional or not self.database_exists(conn, ident): - conn.exec_driver_sql("CREATE DATABASE %s" % ident) + with conn.begin(): + conn.exec_driver_sql("CREATE DATABASE %s" % ident) def drop_named_database(self, engine, ident, conditional=False): with engine.connect().execution_options( - isolation_level="AUTOCOMMIT") as conn: + isolation_level="AUTOCOMMIT", + ) as conn: self._close_out_database_users(conn, ident) - if conditional: - conn.exec_driver_sql("DROP DATABASE IF EXISTS %s" % ident) - else: - conn.exec_driver_sql("DROP DATABASE %s" % ident) + with conn.begin(): + if conditional: + conn.exec_driver_sql("DROP DATABASE IF EXISTS %s" % ident) + else: + conn.exec_driver_sql("DROP DATABASE %s" % ident) def drop_additional_objects(self, conn): enums = [e['name'] for e in sqlalchemy.inspect(conn).get_enums()] |