दिलचस्प पोस्ट
एक संग्रह से यादृच्छिक सबसेट लेने का सबसे अच्छा तरीका है? अजगर: लिपियों की अपनी निर्देशिका में लिपियों की कार्यशील निर्देशिका बदलें एक अन्य जेएस फ़ाइल में एक जावास्क्रिप्ट समारोह कॉलिंग किसी सामग्री के तत्व में एचटीएमएल के साथ चयनित पाठ को कैसे बदलना है? JTextField सीमित राशि राशि इनपुट और केवल संख्यात्मक स्वीकार करते हैं रीढ़ की हड्डी, नहीं "this.el" रैपिंग मैं PHP में एक MySQL तालिका का अंतिम डाला आईडी कैसे प्राप्त करूं? एक नया TextView प्रोग्राम बनाएं तो इसे एक और TextView के नीचे प्रदर्शित करें जूनिट परीक्षा कक्षाओं में स्प्रिंग एप्लीकेशन संदर्भ का पुन: उपयोग करें पृष्ठ लोड पर बीनिंग बीन पर क्वेरी क्वेरी स्ट्रिंग यूआरएल मापदंडों को कैसे प्राप्त करूं? ऐनिमेशन को नष्ट किए बिना एनिमेटेड GIF फ़ाइल का आकार बदलें अप करने के लिए फोन नंबर कैसे करें? Graphics2D.drawString में नई लाइन के साथ समस्याएं क्या एसकैपी का उपयोग वेबसाइटों से गतिशील सामग्री को परिमार्जन करने के लिए किया जा सकता है जो AJAX का उपयोग कर रहे हैं? पीडीएफ। जेएस: यूआरएल के बजाए एक बेस 64 फाइल स्रोत का उपयोग कर एक पीडीएफ फाइल का प्रतिपादन

मैं कैसे कच्चे एसक्यूएल प्रश्नों को देख सकता हूं Django चल रहा है?

क्या एक तरीका है कि एक क्वेरी दिखाने के दौरान एसक्यूएल को दिखाना है कि Django चल रहा है?

वेब के समाधान से एकत्रित समाधान "मैं कैसे कच्चे एसक्यूएल प्रश्नों को देख सकता हूं Django चल रहा है?"

डॉक्स पूछे जाने वाले प्रश्न देखें: " मैं कैसे जावा एसक्यूएल प्रश्नों को देख सकता हूं? "

django.db.connection.queries में SQL क्वेरीज़ की एक सूची है:

 from django.db import connection print connection.queries 

क्वेरीज़ में एक query विशेषता है जिसमें निष्पादित होने वाली क्वेरी शामिल होती है:

 print MyModel.objects.filter(name="my name").query 

ध्यान दें कि क्वेरी का आउटपुट मान्य SQL नहीं है, क्योंकि:

"Django वास्तव में मापदंडों को कभी भी रूपांतरित नहीं करता है: यह क्वेरी और मापदंड अलग-अलग डेटाबेस एडाप्टर को भेजता है, जो उचित संचालन करता है।"

Django बग रिपोर्ट # 17741 से

उसके कारण, आपको सीधे क्वेरी को आउटपुट एक डेटाबेस में नहीं भेजना चाहिए

Debug_toolbar पर एक नज़र डालें , यह डिबगिंग के लिए बहुत उपयोगी है।

दस्तावेज़ीकरण और स्रोत http://django-debug-toolbar.readthedocs.io/ पर उपलब्ध है।

डीबग टूलबार का स्क्रीनशॉट

Django-extensions में एक पैरामीटर print-sql साथ एक कमांड shell_plus है

 ./manage.py shell_plus --print-sql 

डीजेंगो-शेल में सभी निष्पादित प्रश्नों को मुद्रित किया जाएगा

पूर्व .:

 User.objects.get(pk=1) SELECT "auth_user"."id", "auth_user"."password", "auth_user"."last_login", "auth_user"."is_superuser", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 1 Execution time: 0.002466s [Database: default] <User: username> 

यद्यपि आप इसे दिए गए कोड के साथ कर सकते हैं, मुझे पता चलता है कि डीबग टूलबार ऐप का उपयोग करना क्वेरीज़ दिखाने के लिए एक शानदार टूल है आप इसे गिटूब से डाउनलोड कर सकते हैं ।

यह आपको दिए गए पृष्ठ पर सभी प्रश्नों को दिखाने का विकल्प देता है, साथ ही क्वेरी के समय के साथ। यह एक त्वरित समीक्षा के लिए कुल समय के साथ पृष्ठ पर क्वेरी की संख्या भी बताता है यह एक महान उपकरण है, जब आप यह देखना चाहते हैं कि डीजेंगो ओआरएम, पर्दे के पीछे क्या करता है। इसमें अन्य बहुत अच्छी सुविधाएं भी हैं, यदि आप चाहें तो इसका उपयोग कर सकते हैं।

 q = Query.objects.values('val1','val2','val_etc') print q.query 

कोई अन्य उत्तर इस विधि को शामिल नहीं करता है, इसलिए:

मैं अब तक सबसे उपयोगी, सरल और विश्वसनीय तरीके से अपने डेटाबेस से पूछता हूं। उदाहरण के लिए, आप Postgres के लिनक्स के लिए कर सकते हैं:

 sudo su postgres tail -f /var/log/postgresql/postgresql-8.4-main.log 

प्रत्येक डेटाबेस में थोड़ा अलग प्रक्रिया होगी डेटाबेस लॉग में आप न केवल कच्चे एसक्यूएल देखेंगे, लेकिन कोई भी कनेक्शन सेटअप या लेनदेन ओवरहेड डीजेंजो सिस्टम पर रख रहा है।

यदि आप सुनिश्चित करते हैं कि आपकी सेटिंग्स.py फ़ाइल में है:

  1. CONTEXT_PROCESSORS में सूचीबद्ध django.core.context_processors.debug
  2. DEBUG=True
  3. INTERNAL_IPS टपल में आपका IP

उसके बाद आपको sql_queries चर का एक्सेस होना चाहिए। मैं प्रत्येक पृष्ठ पर एक पाद लेख जोड़ता हूं जो इस तरह दिखता है:

 {%if sql_queries %} <div class="footNav"> <h2>Queries</h2> <p> {{ sql_queries|length }} Quer{{ sql_queries|pluralize:"y,ies" }}, {{sql_time_sum}} Time {% ifnotequal sql_queries|length 0 %} (<span style="cursor: pointer;" onclick="var s=document.getElementById('debugQueryTable').style;s.disp\ lay=s.display=='none'?'':'none';this.innerHTML=this.innerHTML=='Show'?'Hide':'Show';">Show</span>) {% endifnotequal %} </p> <table id="debugQueryTable" style="display: none;"> <col width="1"></col> <col></col> <col width="1"></col> <thead> <tr> <th scope="col">#</th> <th scope="col">SQL</th> <th scope="col">Time</th> </tr> </thead> <tbody> {% for query in sql_queries %} <tr class="{% cycle odd,even %}"> <td>{{ forloop.counter }}</td> <td>{{ query.sql|escape }}</td> <td>{{ query.time }}</td> </tr> {% endfor %} </tbody> </table> </div> {% endif %} 

मुझे लाइन को जोड़कर चर sql_time_sum मिला है

 context_extras['sql_time_sum'] = sum([float(q['time']) for q in connection.queries]) 

django_src / django / core / context_processors.py में डिबग फ़ंक्शन के लिए

एक अन्य विकल्प, इस पोस्ट द्वारा वर्णित settings.py में लॉगिंग विकल्प देखें

http://dabapps.com/blog/logging-sql-queries-django-13/

debug_toolbar आपके देव सर्वर पर प्रत्येक पृष्ठ लोड को धीमा कर देता है, लॉगिंग इसलिए नहीं है कि यह तेज़ हो। आउटपुट कंसोल या फाइल करने के लिए फेंक दिया जा सकता है, इसलिए UI उतना अच्छा नहीं है लेकिन कई एसक्यूएल के साथ विचारों के लिए, डीबग_टाओलबार के माध्यम से एसक्यूएल को डीबग करने और अनुकूलित करने में बहुत समय लगता है क्योंकि प्रत्येक पेज लोड इतनी धीमी है

https://code.djangoproject.com/ticket/17741 पर आधारित, निम्न SQL को वैध एसक्यूएल के रूप में वापस देता है:

 def str_query(qs): """ qs.query returns something that isn't valid SQL, this returns the actual valid SQL that's executed: https://code.djangoproject.com/ticket/17741 """ cursor = connections[qs.db].cursor() query, params = qs.query.sql_with_params() cursor.execute('EXPLAIN ' + query, params) res = str(cursor.db.ops.last_executed_query(cursor, query, params)) assert res.startswith('EXPLAIN ') return res[len('EXPLAIN '):]