diff options
| author | Anssi Kääriäinen <akaariai@gmail.com> | 2012-05-27 02:24:57 +0300 |
|---|---|---|
| committer | Anssi Kääriäinen <akaariai@gmail.com> | 2012-07-01 19:27:36 +0300 |
| commit | da573fbb4172fb962c9f021fc0c03cf91b13e746 (patch) | |
| tree | a8a6d9ef1d08eabae0e75863ef9f2bfa8f1facc1 /django/db | |
| parent | bd283aa844b04651b7c8b4e85f48c6dced1678f0 (diff) | |
Fixed some locations to work with autocommit=True
- backends: supports_transactions()
- select_for_update tests
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/backends/__init__.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index d70fe54bdb..dab9b7e213 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -417,15 +417,24 @@ class BaseDatabaseFeatures(object): @cached_property def supports_transactions(self): "Confirm support for transactions" - cursor = self.connection.cursor() - cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)') - self.connection._commit() - cursor.execute('INSERT INTO ROLLBACK_TEST (X) VALUES (8)') - self.connection._rollback() - cursor.execute('SELECT COUNT(X) FROM ROLLBACK_TEST') - count, = cursor.fetchone() - cursor.execute('DROP TABLE ROLLBACK_TEST') - self.connection._commit() + try: + # Make sure to run inside a managed transaction block, + # otherwise autocommit will cause the confimation to + # fail. + self.connection.enter_transaction_management() + self.connection.managed(True) + cursor = self.connection.cursor() + cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)') + self.connection._commit() + cursor.execute('INSERT INTO ROLLBACK_TEST (X) VALUES (8)') + self.connection._rollback() + cursor.execute('SELECT COUNT(X) FROM ROLLBACK_TEST') + count, = cursor.fetchone() + cursor.execute('DROP TABLE ROLLBACK_TEST') + self.connection._commit() + self.connection._dirty = False + finally: + self.connection.leave_transaction_management() return count == 0 @cached_property |
