2012-09-11 11 views
20

के लिए डिस्प्ले क्वेरीज मैं फ्लास्क और एसक्यूएल कीमिया के साथ एक ऐप विकसित कर रहा हूं। मुझेफ्लास्क SQLAlchemy डिबग

डीबगिंग के लिए प्रत्येक क्वेरी के साथ एक पृष्ठ उत्पन्न करने के लिए निष्पादित प्रश्नों को प्रदर्शित करने की आवश्यकता है, इसे करने का सबसे अच्छा तरीका क्या है?

उत्तर

8

मैंने इसे स्वयं नहीं उपयोग किया है, लेकिन ऐसा लगता है कि फ्लास्क डीबग-टूलबार इससे मदद कर सकता है।

https://github.com/mgood/flask-debugtoolbar

यह Django-डिबग-उपकरण पट्टी है, जो प्रश्नों रूपरेखा के लिए इस्तेमाल किया जा सकता का एक बंदरगाह है। फ्लास्क डीबग-टूलबार का प्रलेखन इसका उल्लेख नहीं करता है, लेकिन SQLAlchemyDebugPanel के लिए कोड है।
तो मुझे लगता है कि परियोजना को देखने के लिए यह उचित हो सकता है, और देखें कि यह आपको क्या चाहिए।

+2

यह काम करता है। आपको केवल एसक्यूएलकेमी एसक्यूएल कीमिया एक्सटेंशन के साथ स्थापित करना है और डीबग टूलबार इसे उठाएगा। धन्यवाद – applechief

+1

यदि आप क्वेरी के साथ कुछ और करना चाहते हैं, तो क्वेरी ऑब्जेक्ट पर str() को कॉल करने से आपको क्वेरी का एक स्ट्रिंग प्रस्तुतिकरण मिलेगा जो आप जो कुछ भी कर सकते हैं वह कर सकते हैं। इसमें संभावित रूप से पैरामीटरयुक्त मान नहीं होंगे, लेकिन आप क्वेरी संरचना को देख पाएंगे। – aezell

3

अन्य उत्तर केवल flask_sqlalchemy के साथ काम करता है, flask और sqlalchemy नहीं।

आप देशी SQLAlchemy का उपयोग करना चाहते हैं, तो आप त्वरित सुधार के रूप में यह कर सकते हैं: http://yuji.wordpress.com/2014/01/07/use-native-sqlalchemy-in-flask-debugtoolbar/

from flask.ext.sqlalchemy import _EngineDebuggingSignalEvents 
_EngineDebuggingSignalEvents(engine, app.import_name).register() 
# use at your own risk! a development environment shouldn't really care though! 

समझाने/चयन अंतिमबिंदुओं उन्हें मैन्युअल रूप से अपने प्रोजेक्ट में तारों के बिना काम नहीं करते है, लेकिन बहुत से कम से कम आपकी क्वेरी डीबगर (गिनती और एसक्यूएल) काम करता है। मैं यह समझने की कोशिश कर रहा था कि मेरी किमिया किस तरह की पूछताछ कर रही थी, और मुझे मिल गया।

+0

कृपया ध्यान दें कि अभी भी फ्लास्क-स्क्लाक्लेमी एक्सटेंशन को स्थापित करने की आवश्यकता है, क्योंकि यह इससे सेरेवलल विधियों का उपयोग करता है। –

4

देर से उत्तर दें लेकिन आपके sqlalchemy create_engine में "echo = True" सेटिंग निष्पादित क्वेरी और समय लॉग इन करेगा।

48

यदि आप फ्लास्क एक्सटेंशन का उपयोग कर रहे हैं और create_engine से परेशान नहीं करना चाहते हैं, तो आप कॉन्फ़िगरेशन कुंजी SQLALCHEMY_ECHO=True सेट कर सकते हैं।

http://flask-sqlalchemy.pocoo.org/2.1/config/

+0

+1: क्वेरी स्ट्रिंग को आउटपुट करने के लिए सरल, साफ जवाब। धन्यवाद। – tatlar

21
app.config['SQLALCHEMY_ECHO'] = True 
0

आप अपने खुद के अजगर लॉगिंग विन्यास का उपयोग कर रहे हैं, तो आप बस set the level of the 'sqlalchemy.engine' logger to 'INFO' in your config कर सकते हैं।

आपके अजगर लॉगिंग को विन्यस्त के कई तरीके हैं, लेकिन यहाँ एक उदाहरण using logging.config.dictConfig()

import logging.config 

logging.config.dictConfig({ 
    ... 
    'loggers': { 
     'sqlalchemy.engine': { 
      'level': 'INFO', 
      'handlers': ... 
     } 
    } 
}) 
0

Cawb07 से जवाब है, जो यह मेरे लिए हल करने के अलावा, सुनिश्चित करें कि आप DEBUG_TB_INTERCEPT_REDIRECTS सेट होना है जब आप रीडायरेक्ट से पहले पूछताछ कर रहे हों तो सही होगा।