You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.5 KiB

from django.db.backends.mysql.base import DatabaseCreation as MySQLCreation
from django.db.backends.mysql.base import DatabaseOperations as MySQLOperations
from django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper
from django.db.backends.mysql.base import DatabaseIntrospection as MySQLIntrospection
try:
import MySQLdb as Database
except ImportError, e:
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
class DatabaseOperations(MySQLOperations):
"""Custom database backend wrapper."""
compiler_module = "autotest_lib.frontend.db.backends.afe.compiler"
class DatabaseWrapper(MySQLDatabaseWrapper):
"""Custom database backend wrapper."""
def __init__(self, *args, **kwargs):
self.connection = None
super(DatabaseWrapper, self).__init__(*args, **kwargs)
self.creation = MySQLCreation(self)
try:
self.ops = DatabaseOperations()
except TypeError:
self.ops = DatabaseOperations(connection=kwargs.get('connection'))
self.introspection = MySQLIntrospection(self)
def _valid_connection(self):
if self.connection is not None:
if self.connection.open:
try:
self.connection.ping()
return True
except Database.DatabaseError:
self.connection.close()
self.connection = None
return False