[1.7.x] Fixed #22321 -- Wrapped exceptions in _set_autocommit.

Refs #21202.

Backport of 3becac84 from master
This commit is contained in:
Aymeric Augustin 2014-03-23 23:09:26 +01:00
parent 7e89434084
commit 5f22bda382
4 changed files with 14 additions and 10 deletions

View File

@ -488,7 +488,8 @@ class DatabaseWrapper(BaseDatabaseWrapper):
pass pass
def _set_autocommit(self, autocommit): def _set_autocommit(self, autocommit):
self.connection.autocommit(autocommit) with self.wrap_database_errors:
self.connection.autocommit(autocommit)
def disable_constraint_checking(self): def disable_constraint_checking(self):
""" """

View File

@ -687,7 +687,8 @@ class DatabaseWrapper(BaseDatabaseWrapper):
pass pass
def _set_autocommit(self, autocommit): def _set_autocommit(self, autocommit):
self.connection.autocommit = autocommit with self.wrap_database_errors:
self.connection.autocommit = autocommit
def check_constraints(self, table_names=None): def check_constraints(self, table_names=None):
""" """

View File

@ -192,14 +192,15 @@ class DatabaseWrapper(BaseDatabaseWrapper):
self.connection.set_isolation_level(isolation_level) self.connection.set_isolation_level(isolation_level)
def _set_autocommit(self, autocommit): def _set_autocommit(self, autocommit):
if self.psycopg2_version >= (2, 4, 2): with self.wrap_database_errors:
self.connection.autocommit = autocommit if self.psycopg2_version >= (2, 4, 2):
else: self.connection.autocommit = autocommit
if autocommit:
level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT
else: else:
level = self.isolation_level if autocommit:
self.connection.set_isolation_level(level) level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT
else:
level = self.isolation_level
self.connection.set_isolation_level(level)
def check_constraints(self, table_names=None): def check_constraints(self, table_names=None):
""" """

View File

@ -411,7 +411,8 @@ class DatabaseWrapper(BaseDatabaseWrapper):
level = '' level = ''
# 'isolation_level' is a misleading API. # 'isolation_level' is a misleading API.
# SQLite always runs at the SERIALIZABLE isolation level. # SQLite always runs at the SERIALIZABLE isolation level.
self.connection.isolation_level = level with self.wrap_database_errors:
self.connection.isolation_level = level
def check_constraints(self, table_names=None): def check_constraints(self, table_names=None):
""" """