2012-03-28 30 views

Trả lời

2

Có 2 cách:

  1. https://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running

  2. Trong Django 1.3 trở lên, bạn có thể sử dụng khai thác gỗ mà tôi tin rằng bãi truy vấn sql của bạn vào nhật ký. https://docs.djangoproject.com/en/dev/topics/logging/

Dường như không có cách dễ dàng về phía trước mà không có DEBUG = True. Đây là gần nhất tôi có thể tìm thấy: Logging Django SQL queries with DEBUG set to False

+0

đúng, nhưng câu hỏi yêu cầu cụ thể cho .save() và DEBUG = True không phải là một tùy chọn vì tôi không thể đặt máy chủ trực tiếp của tôi ở dạng DEBUG. Tôi cũng không thể tái tạo vấn đề của mình trên môi trường gỡ lỗi của mình. –

+0

Dường như không có cách dễ dàng về phía trước mà không có DEBUG = True. Đây là gần nhất tôi có thể tìm thấy: http://stackoverflow.com/questions/7181511/logging-django-sql-queries-with-debug-set-to-false – Sid

+0

Có thể bạn có thể đặt cơ sở dữ liệu của mình thành [truy vấn nhật ký] (http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html#GUC-LOG-STATEMENT) (hãy cẩn thận: làm chậm nó) – RickyA

4

Dựa trên câu trả lời Sid và đoạn này (http://djangosnippets.org/snippets/1973/) tôi đã thay thế các postgres db-wrapper với điều này:

# base.py 
from django.db.backends.postgresql_psycopg2.base import * 

#http://djangosnippets.org/snippets/1973/ 
class DatabaseWrapper(DatabaseWrapper): 

    def __init__(self, *args, **kwargs): 
     super(DatabaseWrapper, self).__init__(*args, **kwargs) 
     self.use_debug_cursor = True 

Sau đó, trong settings.py, sử dụng 'ENGINE': 'my_project.db_backend', thay vì phụ trợ mặc định (trong trường hợp của tôi, 'ENGINE': 'django.db.backends.postgresql_psycopg2',)

Bây giờ connection.queries sẽ chứa tất cả các truy vấn của bạn!

Các vấn đề liên quan