क्या किसी को पता है कि SQLAlchemy में session.commit()
और session.flush()
के बीच मुख्य अंतर क्या है?session.commit() और session.flush() के बीच क्या अंतर है?
उत्तर
यहां documentation से कुछ प्रासंगिक उद्धरण दिए गए हैं।
फ्लश:
Session
उसके डिफ़ॉल्ट विन्यास के साथ प्रयोग किया जाता है, फ्लश कदम लगभग हमेशा पारदर्शी रूप से किया जाता है। विशेष रूप से, फ़्लश किसी भी व्यक्तिगत क्वेरी जारी होने से पहले, साथ ही साथcommit()
लेनदेन से पहले कॉल के पहले होता है।
प्रतिबद्ध:
commit()
वर्तमान लेन-देन के लिए इस्तेमाल किया जाता है। यह हमेशाflush()
को किसी भी शेष स्थिति को डेटाबेस पर फ़्लश करने के लिए पहले से जारी करता है; यह "ऑटोफ्लश" सेटिंग से स्वतंत्र है। यदि कोई लेनदेन मौजूद नहीं है, तो यह एक त्रुटि उठाता है। ध्यान दें कि सत्र का डिफ़ॉल्ट व्यवहार यह है कि "लेनदेन" हमेशा मौजूद होता है; यह व्यवहारautocommit=True
सेट करके अक्षम किया जा सकता है। ऑटोोकॉमिट मोड में, लेनदेनbegin()
विधि को कॉल करके शुरू किया जा सकता है।
सीधे:
commit()
वर्तमान लेन-देन के लिए इस्तेमाल किया जाता है। डेटाबेस में किसी भी शेष राज्य को फ्लश करने के लिए यह हमेशाflush()
को जारी करता है।
सबसे आसान तरीका है मुझे पता है कि कैसे इन करना क्या समझाने के लिए केवल आपके दिखाने के लिए, echo=True
उपयोग कर रहा है:
>>> session.flush()
BEGIN (implicit)
INSERT INTO users (username, password) VALUES (?, ?)
('alice', None)
>>> session.commit()
COMMIT
>>>
flush()
का कारण बनता है डेटा डेटाबेस के लिए भेजा जाना। commit()
COMMIT
का कारण बनता है, जो डेटाबेस को केवल उस डेटा को रखने के लिए कहता है जो अभी भेजा गया था। जैसा कि अन्य ने कहा है, commit()
भी flush()
होने की आवश्यकता होगी, यदि इसकी आवश्यकता हो।
हालांकि उपर्युक्त उत्तर सही हैं, फ्लश की सबसे उपयोगी विशेषता डेटाबेस में तालिका में किए गए परिवर्तनों को कोड में संबंधित ऑब्जेक्ट में लागू करने में है। यहाँ एक उदाहरण है, मान लीजिए आप एक उपयोगकर्ता रजिस्टर और आप उसकी आईडी वापस देना चाहते हैं,
u = User(name,address,phone) #id is autogenerated
session.add(u)
session.commit() #calls flush beforehand, but we need it after the commit
session.flush() #updates the objects of the session
print(u.id) #id field of the User object updated after the flush
आप उसकी आईडी प्राप्त करने के लिए फिर से क्वेरी की जरूरत नहीं है !!आशा है कि इस मदद करता है
flush()
स्मृति में आयोजित वस्तु/वस्तुओं की वर्तमान स्थिति के साथ अपने डेटाबेस सिंक्रनाइज़ करेगा लेकिन यह लेन-देन के लिए प्रतिबद्ध नहीं है। इसलिए, अगर आपकोflush()
के बाद कोई अपवाद मिलता है, तो लेनदेन वापस लुढ़का जाएगा।commit()
का उपयोग करके एक बार में बड़े डेटा को करने के बजायflush()
का उपयोग करके डेटा के छोटे हिस्सों के साथ आप अपने डेटाबेस को सिंक्रनाइज़ कर सकते हैं औरOut Of Memory
अपवाद प्राप्त करने के जोखिम का सामना कर सकते हैं।
commit()
डाटाबेस स्थायी रूप से डेटा संग्रहीत करेगा। एक बारcommit()
सफल होने के बाद आप अपने लेनदेन को रोलबैक नहीं कर सकते हैं।
- 1. # {} $ {} और% {} के बीच क्या अंतर है?
- 2. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 3. $ और $$ के बीच क्या अंतर है?
- 4. के बीच क्या अंतर है:। और: आर !?
- 5. भिन्नता और '-' के बीच क्या अंतर है?
- 6. "$^एन" और "$ +" के बीच क्या अंतर है?
- 7. के बीच क्या अंतर है?
- 8. अंतर और कहां के बीच क्या अंतर है?
- 9. file_get_contents और fread बीच क्या अंतर है
- 10. क्या बीच का अंतर है :: और ::: स्काला
- 11. "। +" और "। +?" के बीच अंतर
- 12. $ {} और # {} के बीच अंतर क्या हैं?
- 13. PHP के बीच क्या अंतर है और इसमें शामिल है?
- 14. अपवाद के .TOString() और मैसेज के बीच क्या अंतर है?
- 15. 7zip के 7z.sfx और 7zsd.sfx के बीच क्या अंतर है?
- 16. डीएल के फाइलवर्सन और उत्पादवर्जन के बीच क्या अंतर है?
- 17. UIImageView के फ्रेम और सीमाओं के बीच क्या अंतर है?
- 18. फ़ायरबग के console.log() और console.debug() के बीच क्या अंतर है?
- 19. पैरामीटर परिभाषाओं के बीच अंतर (प्रकार और नाम), और (प्रकार * नाम) के बीच अंतर क्या हैं?
- 20. ओरिएंटब संस्करणों के बीच क्या अंतर है?
- 21. एन्कोड/डीकोड के बीच क्या अंतर है?
- 22. os.popen() विधियों के बीच क्या अंतर है?
- 23. MATLAB में & &&& के बीच क्या अंतर है?
- 24. ऑब्जेक्ट और * के बीच अंतर?
- 25. इन कार्यों के बीच क्या अंतर है?
- 26. applicationDidReceiveMemoryWarning, didReceiveMemoryWarning के बीच क्या अंतर है?
- 27. इन कार्यों के बीच क्या अंतर है
- 28. window.innerWidth window.outerWidth के बीच क्या अंतर है?
- 29. Response.Write() औरResponse.Output.Write() के बीच क्या अंतर है?
- 30. वीबीए: और + के बीच अंतर
प्रलेखन ("फ्लशिंग" और "करने से" http://www.sqlalchemy.org/docs/orm/session.html#flushing में) में से कौन सा पहलू आप स्पष्ट नहीं मिल रहा है ? – NPE