Index: django/db/backends/postgresql/base.py
===================================================================
--- django/db/backends/postgresql/base.py	(revision 7624)
+++ django/db/backends/postgresql/base.py	(working copy)
@@ -83,9 +83,9 @@
     }
 
     def _cursor(self, settings):
-        set_tz = False
+        first_cursor = False
         if self.connection is None:
-            set_tz = True
+            first_cursor = True
             if settings.DATABASE_NAME == '':
                 from django.core.exceptions import ImproperlyConfigured
                 raise ImproperlyConfigured("You need to specify DATABASE_NAME in your Django settings file.")
@@ -99,10 +99,12 @@
             if settings.DATABASE_PORT:
                 conn_string += " port=%s" % settings.DATABASE_PORT
             self.connection = Database.connect(conn_string, **self.options)
-            self.connection.set_isolation_level(1) # make transactions transparent to all cursors
+            self.connection.set_isolation_level(0)
         cursor = self.connection.cursor()
-        if set_tz:
+        if first_cursor:
             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
+            cursor.execute("SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED")
+            self._commit()
         cursor.execute("SET client_encoding to 'UNICODE'")
         cursor = UnicodeCursorWrapper(cursor, 'utf-8')
         return cursor
Index: django/db/backends/postgresql_psycopg2/base.py
===================================================================
--- django/db/backends/postgresql_psycopg2/base.py	(revision 7624)
+++ django/db/backends/postgresql_psycopg2/base.py	(working copy)
@@ -51,9 +51,9 @@
     }
 
     def _cursor(self, settings):
-        set_tz = False
+        first_cursor = False
         if self.connection is None:
-            set_tz = True
+            first_cursor = True
             if settings.DATABASE_NAME == '':
                 from django.core.exceptions import ImproperlyConfigured
                 raise ImproperlyConfigured("You need to specify DATABASE_NAME in your Django settings file.")
@@ -67,10 +67,12 @@
             if settings.DATABASE_PORT:
                 conn_string += " port=%s" % settings.DATABASE_PORT
             self.connection = Database.connect(conn_string, **self.options)
-            self.connection.set_isolation_level(1) # make transactions transparent to all cursors
+            self.connection.set_isolation_level(0)
             self.connection.set_client_encoding('UTF8')
         cursor = self.connection.cursor()
         cursor.tzinfo_factory = None
-        if set_tz:
+        if first_cursor:
             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE])
+            cursor.execute("SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED")
+            self._commit()
         return cursor
Index: django/core/management/commands/loaddata.py
===================================================================
--- django/core/management/commands/loaddata.py	(revision 7624)
+++ django/core/management/commands/loaddata.py	(working copy)
@@ -9,6 +9,13 @@
 except NameError:
     from sets import Set as set   # Python 2.3 fallback
 
+def _set_transaction_mode(connection): 
+    "Make sure a connection is not in autocommit mode." 
+    if hasattr(connection.connection, "autocommit"): 
+        connection.connection.autocommit(False) 
+    elif hasattr(connection.connection, "set_isolation_level"): 
+        connection.connection.set_isolation_level(1) 
+
 class Command(BaseCommand):
     option_list = BaseCommand.option_list + (
         make_option('--verbosity', action='store', dest='verbosity', default='1',
@@ -41,6 +48,7 @@
         # the side effect of initializing the test database (if
         # it isn't already initialized).
         cursor = connection.cursor()
+        _set_transaction_mode(connection)
 
         # Start transaction management. All fixtures are installed in a
         # single transaction to ensure that all references are resolved.
@@ -152,6 +160,7 @@
             
         transaction.commit()
         transaction.leave_transaction_management()
+        connection.close()
 
         if object_count == 0:
             if verbosity > 1:
