Ticket #11798: base.py

File base.py, 1.1 KB (added by Mike Tkachuk <mike@…>, 15 years ago)
Line 
1# Custom DB backend postgresql_psycopg2 based
2# implements persistent database connection using global variable
3
4from django.db.backends.postgresql_psycopg2.base import DatabaseError, DatabaseWrapper as BaseDatabaseWrapper, \
5 IntegrityError
6from psycopg2 import OperationalError
7
8connection = None
9
10class DatabaseWrapper(BaseDatabaseWrapper):
11 def _cursor(self, *args, **kwargs):
12 global connection
13 if connection is not None and self.connection is None:
14 try: # Check if connection is alive
15 connection.cursor().execute('SELECT 1')
16 except OperationalError: # The connection is not working, need reconnect
17 connection = None
18 else:
19 self.connection = connection
20 cursor = super(DatabaseWrapper, self)._cursor(*args, **kwargs)
21 if connection is None and self.connection is not None:
22 connection = self.connection
23 return cursor
24
25 def close(self):
26 if self.connection is not None:
27 self.connection.commit()
28 self.connection = None
Back to Top