Index: django/db/backends/postgresql_psycopg2/base.py
===================================================================
--- django/db/backends/postgresql_psycopg2/base.py	(revision 7178)
+++ 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) # make transactions transparent to all cursors
             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 7178)
+++ 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',
@@ -40,6 +47,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.
@@ -129,6 +137,7 @@
 
         transaction.commit()
         transaction.leave_transaction_management()
+        connection.close()
 
         if object_count == 0:
             if verbosity >= 2:
