MCPcopy
hub / github.com/django/django / CaptureQueriesContext

Class CaptureQueriesContext

django/test/utils.py:719–757  ·  view source on GitHub ↗

Context manager that captures queries executed by the specified connection.

Source from the content-addressed store, hash-verified

717
718
719class CaptureQueriesContext:
720 """
721 Context manager that captures queries executed by the specified connection.
722 """
723
724 def __init__(self, connection):
725 self.connection = connection
726
727 def __iter__(self):
728 return iter(self.captured_queries)
729
730 def __getitem__(self, index):
731 return self.captured_queries[index]
732
733 def __len__(self):
734 return len(self.captured_queries)
735
736 @property
737 def captured_queries(self):
738 return self.connection.queries[self.initial_queries : self.final_queries]
739
740 def __enter__(self):
741 self.force_debug_cursor = self.connection.force_debug_cursor
742 self.connection.force_debug_cursor = True
743 # Run any initialization queries if needed so that they won't be
744 # included as part of the count.
745 self.connection.ensure_connection()
746 self.initial_queries = len(self.connection.queries_log)
747 self.final_queries = None
748 self.reset_queries_disconnected = request_started.disconnect(reset_queries)
749 return self
750
751 def __exit__(self, exc_type, exc_value, traceback):
752 self.connection.force_debug_cursor = self.force_debug_cursor
753 if self.reset_queries_disconnected:
754 request_started.connect(reset_queries)
755 if exc_type is not None:
756 return
757 self.final_queries = len(self.connection.queries_log)
758
759
760class ignore_warnings(TestContextDecorator):

Calls

no outgoing calls