Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Avoided closing the database connection within a transaction.

Refs #9437.
  • Loading branch information...
commit f2f98abb955c83eca3ceea62d1711c80ae028d33 1 parent b746f8a
Aymeric Augustin aaugustin authored
16 django/contrib/gis/db/backends/postgis/operations.py
View
@@ -402,18 +402,10 @@ def _get_postgis_func(self, func):
"""
Helper routine for calling PostGIS functions and returning their result.
"""
- cursor = self.connection._cursor()
- try:
- try:
- cursor.execute('SELECT %s()' % func)
- row = cursor.fetchone()
- except:
- # Responsibility of callers to perform error handling.
- raise
- finally:
- # Close out the connection. See #9437.
- self.connection.close()
- return row[0]
+ # Close out the connection. See #9437.
+ with self.connection.temporary_connection() as cursor:
+ cursor.execute('SELECT %s()' % func)
+ return cursor.fetchone()[0]
def postgis_geos_version(self):
"Returns the version of the GEOS library used with PostGIS."
4 django/db/backends/__init__.py
View
@@ -472,11 +472,13 @@ def temporary_connection(self):
Context manager that ensures that a connection is established, and
if it opened one, closes it to avoid leaving a dangling connection.
This is useful for operations outside of the request-response cycle.
+
+ Provides a cursor: with self.temporary_connection() as cursor: ...
"""
must_close = self.connection is None
cursor = self.cursor()
try:
- yield
+ yield cursor
finally:
cursor.close()
if must_close:
Please sign in to comment.
Something went wrong with that request. Please try again.