41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
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
 |