mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Refs #30148 -- Moved logging queries in CursorDebugWrapper to debug_sql() contextmanager.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							6754bffa2b
						
					
				
				
					commit
					f7408b49a5
				
			| @@ -3,6 +3,7 @@ import decimal | |||||||
| import functools | import functools | ||||||
| import hashlib | import hashlib | ||||||
| import logging | import logging | ||||||
|  | from contextlib import contextmanager | ||||||
| from time import time | from time import time | ||||||
|  |  | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| @@ -94,40 +95,38 @@ class CursorDebugWrapper(CursorWrapper): | |||||||
|     # XXX callproc isn't instrumented at this time. |     # XXX callproc isn't instrumented at this time. | ||||||
|  |  | ||||||
|     def execute(self, sql, params=None): |     def execute(self, sql, params=None): | ||||||
|         start = time() |         with self.debug_sql(sql, params, use_last_executed_query=True): | ||||||
|         try: |  | ||||||
|             return super().execute(sql, params) |             return super().execute(sql, params) | ||||||
|         finally: |  | ||||||
|             stop = time() |  | ||||||
|             duration = stop - start |  | ||||||
|             sql = self.db.ops.last_executed_query(self.cursor, sql, params) |  | ||||||
|             self.db.queries_log.append({ |  | ||||||
|                 'sql': sql, |  | ||||||
|                 'time': "%.3f" % duration, |  | ||||||
|             }) |  | ||||||
|             logger.debug( |  | ||||||
|                 '(%.3f) %s; args=%s', duration, sql, params, |  | ||||||
|                 extra={'duration': duration, 'sql': sql, 'params': params} |  | ||||||
|             ) |  | ||||||
|  |  | ||||||
|     def executemany(self, sql, param_list): |     def executemany(self, sql, param_list): | ||||||
|  |         with self.debug_sql(sql, param_list, many=True): | ||||||
|  |             return super().executemany(sql, param_list) | ||||||
|  |  | ||||||
|  |     @contextmanager | ||||||
|  |     def debug_sql(self, sql=None, params=None, use_last_executed_query=False, many=False): | ||||||
|         start = time() |         start = time() | ||||||
|         try: |         try: | ||||||
|             return super().executemany(sql, param_list) |             yield | ||||||
|         finally: |         finally: | ||||||
|             stop = time() |             stop = time() | ||||||
|             duration = stop - start |             duration = stop - start | ||||||
|  |             if use_last_executed_query: | ||||||
|  |                 sql = self.db.ops.last_executed_query(self.cursor, sql, params) | ||||||
|             try: |             try: | ||||||
|                 times = len(param_list) |                 times = len(params) if many else '' | ||||||
|             except TypeError:           # param_list could be an iterator |             except TypeError: | ||||||
|  |                 # params could be an iterator. | ||||||
|                 times = '?' |                 times = '?' | ||||||
|             self.db.queries_log.append({ |             self.db.queries_log.append({ | ||||||
|                 'sql': '%s times: %s' % (times, sql), |                 'sql': '%s times: %s' % (times, sql) if many else sql, | ||||||
|                 'time': "%.3f" % duration, |                 'time': '%.3f' % duration, | ||||||
|             }) |             }) | ||||||
|             logger.debug( |             logger.debug( | ||||||
|                 '(%.3f) %s; args=%s', duration, sql, param_list, |                 '(%.3f) %s; args=%s', | ||||||
|                 extra={'duration': duration, 'sql': sql, 'params': param_list} |                 duration, | ||||||
|  |                 sql, | ||||||
|  |                 params, | ||||||
|  |                 extra={'duration': duration, 'sql': sql, 'params': params}, | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user