2011-08-04 10 views
7

मैं अपने पायथन एप्लिकेशन में स्क्लाइट 3 डेटाबेस का उपयोग कर रहा हूं और पैरामीटर प्रतिस्थापन का उपयोग करके इसे क्वेरी करता हूं।
उदाहरण के लिए:मैं पायथन के साथ एसक्लाइट 3 में क्वेरी कैसे लॉग कर सकता हूं?

cursor.execute('SELECT * FROM table WHERE id > ?', (10,)) 

कुछ प्रश्नों परिणाम ठीक से नहीं लौटते हैं और मैं उन्हें लॉग इन करें और मैन्युअल रूप से SQLite क्वेरी करने के लिए कोशिश करना चाहते हैं।
प्रश्नपत्रों के बजाय मैं इन प्रश्नों को पैरामीटर के साथ कैसे लॉग कर सकता हूं?

+0

[इस] (http://stackoverflow.com/questions/1607368/sql-query-logging-for-sqlite) प्रश्न के समान दिखता है, हालांकि वह उदाहरण पायथन निर्दिष्ट नहीं करता है। देखें कि यह मदद करता है। – thegrinner

उत्तर

-1

मान लें कि आप एक लॉग समारोह है, तो आप इसे पहले कह सकते हैं:

query, param = 'SELECT * FROM table WHERE id > ?', (10,) 
log(query.replace('?', '%s') % param) 
cursor.execute(query, param) 

तो तुम सब पर आपकी क्वेरी को संशोधित नहीं

इसके अलावा, यह स्क्लाइट विशिष्ट नहीं है।

+4

यह गलत परिणाम देगा। स्ट्रिंग युक्त होने पर स्क्लाइट आपके डेटा से बच जाएगा – balrok

8

अजगर 3.3 sqlite3.Connection.set_trace_callback है:

import sqlite3 
connection = sqlite3.connect(':memory:') 
connection.set_trace_callback(print) 

समारोह आप तर्क के रूप में प्रदान करते हैं हर एसक्यूएल बयान है कि निष्पादित किया जाता है के लिए बुलाया जाता है। print के बजाय, आप logging मॉड्यूल से फ़ंक्शन का उपयोग करना चाह सकते हैं।

संबंधित मुद्दे