के लिए संदर्भ प्रबंधक का उपयोग SQL डेटाबेस से निपटने के लिए पाइथन के SQLite इंटरफ़ेस में किया गया है (खराब हो गया है?)। पायथन के SQLite के एपीआई में "संदर्भ प्रबंधक," यानी, पायथन का with
कथन में एक अच्छी सुविधा। मैं आमतौर पर निम्नलिखित तरीके से प्रश्नों निष्पादित करें: उपरोक्त कोड के साथपाइथन के MySQLdb
import as sqlite
with sqlite.connect(db_filename) as conn:
query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
results = conn.execute(query, ("ID1","triangle"))
, अगर मेरे क्वेरी डेटाबेस को संशोधित करता है और मैं conn.commit()
चलाने के लिए भूल जाते हैं, संदर्भ प्रबंधक यह मेरे लिए स्वचालित रूप से with
बयान से बाहर निकलने पर चलाता है। यह अपवादों को अच्छी तरह से संभालता है: यदि कुछ भी करने से पहले अपवाद होता है, तो डेटाबेस वापस लुढ़का जाता है।
अब मैं MySQLdb
इंटरफ़ेस का उपयोग कर रहा हूं, जो बॉक्स के बाहर एक समान संदर्भ प्रबंधक का समर्थन नहीं करता है। मैं अपना खुद का निर्माण कैसे करूं? एक संबंधित प्रश्न here है, लेकिन यह एक पूर्ण समाधान प्रदान नहीं करता है।
उत्कृष्ट समाधान! आपने केवल MySQLdb का उत्तर नहीं दिया, इसका उपयोग अन्य ड्राइवरों के साथ भी किया जा सकता है। इसके अलावा, oursql आशाजनक लग रहा है। धन्यवाद। – conradlee
@MMartins: सुधार के लिए बहुत बहुत धन्यवाद। – unutbu