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
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
|