__init__.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from django.core import signals
  2. from django.db.utils import (
  3. DEFAULT_DB_ALIAS,
  4. DJANGO_VERSION_PICKLE_KEY,
  5. ConnectionHandler,
  6. ConnectionRouter,
  7. DatabaseError,
  8. DataError,
  9. Error,
  10. IntegrityError,
  11. InterfaceError,
  12. InternalError,
  13. NotSupportedError,
  14. OperationalError,
  15. ProgrammingError,
  16. )
  17. from django.utils.connection import ConnectionProxy
  18. __all__ = [
  19. "close_old_connections",
  20. "connection",
  21. "connections",
  22. "reset_queries",
  23. "router",
  24. "DatabaseError",
  25. "IntegrityError",
  26. "InternalError",
  27. "ProgrammingError",
  28. "DataError",
  29. "NotSupportedError",
  30. "Error",
  31. "InterfaceError",
  32. "OperationalError",
  33. "DEFAULT_DB_ALIAS",
  34. "DJANGO_VERSION_PICKLE_KEY",
  35. ]
  36. connections = ConnectionHandler()
  37. router = ConnectionRouter()
  38. # For backwards compatibility. Prefer connections['default'] instead.
  39. connection = ConnectionProxy(connections, DEFAULT_DB_ALIAS)
  40. # Register an event to reset saved queries when a Django request is started.
  41. def reset_queries(**kwargs):
  42. for conn in connections.all(initialized_only=True):
  43. conn.queries_log.clear()
  44. signals.request_started.connect(reset_queries)
  45. # Register an event to reset transaction state and close connections past
  46. # their lifetime.
  47. def close_old_connections(**kwargs):
  48. for conn in connections.all(initialized_only=True):
  49. conn.close_if_unusable_or_obsolete()
  50. signals.request_started.connect(close_old_connections)
  51. signals.request_finished.connect(close_old_connections)