__init__.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. "connection",
  20. "connections",
  21. "router",
  22. "DatabaseError",
  23. "IntegrityError",
  24. "InternalError",
  25. "ProgrammingError",
  26. "DataError",
  27. "NotSupportedError",
  28. "Error",
  29. "InterfaceError",
  30. "OperationalError",
  31. "DEFAULT_DB_ALIAS",
  32. "DJANGO_VERSION_PICKLE_KEY",
  33. ]
  34. connections = ConnectionHandler()
  35. router = ConnectionRouter()
  36. # For backwards compatibility. Prefer connections['default'] instead.
  37. connection = ConnectionProxy(connections, DEFAULT_DB_ALIAS)
  38. # Register an event to reset saved queries when a Django request is started.
  39. def reset_queries(**kwargs):
  40. for conn in connections.all(initialized_only=True):
  41. conn.queries_log.clear()
  42. signals.request_started.connect(reset_queries)
  43. # Register an event to reset transaction state and close connections past
  44. # their lifetime.
  45. def close_old_connections(**kwargs):
  46. for conn in connections.all(initialized_only=True):
  47. conn.close_if_unusable_or_obsolete()
  48. signals.request_started.connect(close_old_connections)
  49. signals.request_finished.connect(close_old_connections)