summaryrefslogtreecommitdiff
path: root/oslo_db/sqlalchemy/provision.py
diff options
context:
space:
mode:
Diffstat (limited to 'oslo_db/sqlalchemy/provision.py')
-rw-r--r--oslo_db/sqlalchemy/provision.py24
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()]