base.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """
  2. Dummy database backend for Django.
  3. Django uses this if the database ENGINE setting is empty (None or empty string).
  4. Each of these API functions, except connection.close(), raise
  5. ImproperlyConfigured.
  6. """
  7. from django.core.exceptions import ImproperlyConfigured
  8. from django.db.backends.base.base import BaseDatabaseWrapper
  9. from django.db.backends.base.client import BaseDatabaseClient
  10. from django.db.backends.base.creation import BaseDatabaseCreation
  11. from django.db.backends.base.introspection import BaseDatabaseIntrospection
  12. from django.db.backends.base.operations import BaseDatabaseOperations
  13. from django.db.backends.dummy.features import DummyDatabaseFeatures
  14. def complain(*args, **kwargs):
  15. raise ImproperlyConfigured(
  16. "settings.DATABASES is improperly configured. "
  17. "Please supply the ENGINE value. Check "
  18. "settings documentation for more details."
  19. )
  20. def ignore(*args, **kwargs):
  21. pass
  22. class DatabaseOperations(BaseDatabaseOperations):
  23. quote_name = complain
  24. class DatabaseClient(BaseDatabaseClient):
  25. runshell = complain
  26. class DatabaseCreation(BaseDatabaseCreation):
  27. create_test_db = ignore
  28. destroy_test_db = ignore
  29. class DatabaseIntrospection(BaseDatabaseIntrospection):
  30. get_table_list = complain
  31. get_table_description = complain
  32. get_relations = complain
  33. get_indexes = complain
  34. class DatabaseWrapper(BaseDatabaseWrapper):
  35. operators = {}
  36. # Override the base class implementations with null
  37. # implementations. Anything that tries to actually
  38. # do something raises complain; anything that tries
  39. # to rollback or undo something raises ignore.
  40. _cursor = complain
  41. ensure_connection = complain
  42. _commit = complain
  43. _rollback = ignore
  44. _close = ignore
  45. _savepoint = ignore
  46. _savepoint_commit = complain
  47. _savepoint_rollback = ignore
  48. _set_autocommit = complain
  49. # Classes instantiated in __init__().
  50. client_class = DatabaseClient
  51. creation_class = DatabaseCreation
  52. features_class = DummyDatabaseFeatures
  53. introspection_class = DatabaseIntrospection
  54. ops_class = DatabaseOperations
  55. def is_usable(self):
  56. return True