Context manager that captures queries executed by the specified connection.
| 717 | |
| 718 | |
| 719 | class 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 | |
| 760 | class ignore_warnings(TestContextDecorator): |
no outgoing calls