Avoided closing the database connection within a transaction.
Refs #9437.
This commit is contained in:
parent
b746f8a9e3
commit
f2f98abb95
|
@ -402,18 +402,10 @@ class PostGISOperations(DatabaseOperations, BaseSpatialOperations):
|
||||||
"""
|
"""
|
||||||
Helper routine for calling PostGIS functions and returning their result.
|
Helper routine for calling PostGIS functions and returning their result.
|
||||||
"""
|
"""
|
||||||
cursor = self.connection._cursor()
|
# Close out the connection. See #9437.
|
||||||
try:
|
with self.connection.temporary_connection() as cursor:
|
||||||
try:
|
cursor.execute('SELECT %s()' % func)
|
||||||
cursor.execute('SELECT %s()' % func)
|
return cursor.fetchone()[0]
|
||||||
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]
|
|
||||||
|
|
||||||
def postgis_geos_version(self):
|
def postgis_geos_version(self):
|
||||||
"Returns the version of the GEOS library used with PostGIS."
|
"Returns the version of the GEOS library used with PostGIS."
|
||||||
|
|
|
@ -472,11 +472,13 @@ class BaseDatabaseWrapper(object):
|
||||||
Context manager that ensures that a connection is established, and
|
Context manager that ensures that a connection is established, and
|
||||||
if it opened one, closes it to avoid leaving a dangling connection.
|
if it opened one, closes it to avoid leaving a dangling connection.
|
||||||
This is useful for operations outside of the request-response cycle.
|
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
|
must_close = self.connection is None
|
||||||
cursor = self.cursor()
|
cursor = self.cursor()
|
||||||
try:
|
try:
|
||||||
yield
|
yield cursor
|
||||||
finally:
|
finally:
|
||||||
cursor.close()
|
cursor.close()
|
||||||
if must_close:
|
if must_close:
|
||||||
|
|
Loading…
Reference in New Issue