Set all attributes of transaction before connecting to the database
The connection to the database may fail and thus stop and rollback may be called. All the attributes must be set to avoid to raise another AttributeError exception. Closes #15022
This commit is contained in:
@@ -187,13 +187,7 @@ class Transaction(object):
|
||||
# it is strictly before all transactions started after
|
||||
# but it may be also before transactions started before
|
||||
self.started_at = self.monotonic_time()
|
||||
if not database_name:
|
||||
database = backend.Database().connect()
|
||||
else:
|
||||
database = backend.Database(database_name).connect()
|
||||
Flavor.set(backend.Database.flavor)
|
||||
self.user = user
|
||||
self.database = database
|
||||
self.readonly = readonly
|
||||
self.context = ImmutableDict(context or {})
|
||||
self.create_records = defaultdict(list)
|
||||
@@ -206,6 +200,12 @@ class Transaction(object):
|
||||
self.counter = 0
|
||||
self._datamanagers = []
|
||||
|
||||
if not database_name:
|
||||
database = backend.Database().connect()
|
||||
else:
|
||||
database = backend.Database(database_name).connect()
|
||||
Flavor.set(backend.Database.flavor)
|
||||
self.database = database
|
||||
self.connection = database.get_connection(readonly=readonly,
|
||||
autocommit=autocommit, statement_timeout=timeout)
|
||||
count = 0
|
||||
|
||||
Reference in New Issue
Block a user