में ऑब्जेक्ट पहले से मौजूद है या नहीं, मेरे पास Item
है जिसका id
प्राथमिक कुंजी और स्वत: जेनरेट किया गया है। अब मैं किसी अन्य बाहरी स्रोत से डेटा पढ़ता हूं, Item
ऑब्जेक्ट बनाएं, और यह जांचने की आवश्यकता है कि यह ऑब्जेक्ट पहले से ही मेरे items
तालिका में मौजूद है या नहीं। मैं यह कैसे करुं?SQLAlchemy: जांचें कि तालिका
उत्तर
आप उन वस्तुओं के लिए पूछ सकते हैं जिनके समान गुण हैं और यह जांचें कि गणना शून्य से अधिक है या नहीं। अगर आप जाँच कर सकते हैं
from sqlalchemy import exc
try:
session.add(item)
session.commit()
except exc.IntegrityError:
session.rollback()
print 'This item fails one of the unique/foreign key checks!'
except:
print 'There was another error'
raise
else:
print 'Everything is OK'
यह समस्या है कि यह करने पर कार्य करता है, और फिर वापस रोल है ...
एक अन्य विकल्प:
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
'> 0' अनावश्यक है क्योंकि गिनती() शून्य लौटाती है यदि कोई मिलान नहीं मिलता है और अन्यथा सकारात्मक पूर्णांक होता है। – kalu
@ कalu: "स्पष्ट रूप से स्पष्ट है।" - पायथन –
का ज़ेन गिनती का उपयोग डेटाबेस को और अधिक काम करता है, इसके बाद इसे करने की आवश्यकता होती है। एक कुशल विधि के लिए नीचे मेरा जवाब देखें। – Salami
आप इस के लिए कुछ इसी तरह की कोशिश कर सकते गुण अलग-अलग हैं, तो यह काम कर सकता है:
session.query(Item).filter_by(x=item.x, y=item.y).count() == 0
सबसे प्रभावी तरीका उपयोग करना है exists()
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
- 1. जांचें कि ऑब्जेक्ट एक sqlalchemy मॉडल उदाहरण
- 2. जांचें कि तालिका मौजूद है
- 3. SQLAlchemy तालिका
- 4. जांचें कि कोई SQL तालिका मौजूद है
- 5. जांचें कि एक्सेस तालिका मौजूद है
- 6. sqlalchemy डेटाबेस तालिका लॉक है
- 7. जांचें कि
- 8. जांचें कि आईडी
- 9. जांचें कि किसी तालिका में एक विशिष्ट कॉलम मान
- 10. SQLAlchemy
- 11. एक तालिका में क्वेरी कैसे करें, sqlalchemy
- 12. संबंधों के साथ SQLAlchemy आयात तालिका
- 13. SQLAlchemy ForeignKey तालिका नहीं ढूंढ सकता
- 14. SQLAlchemy
- 15. SQLAlchemy
- 16. SQLAlchemy
- 17. sqlalchemy
- 18. जांचें कि क्या एक पंक्ति
- 19. जांचें कि PHP
- 20. वर्डप्रेस: जांचें कि लिंक
- 21. जांचें कि रूबी
- 22. जांचें कि JQuery
- 23. जांचें कि वेरिएबल
- 24. जांचें कि ssh
- 25. जांचें कि Jinja2
- 26. जांचें कि जावास्क्रिप्ट
- 27. जांचें कि क्या रूबी
- 28. JQuery: जांचें कि '.remove()'
- 29. जांचें कि सरणी PHP
- 30. जांचें कि पहले पुश
क्या यह '' get_or_create'' परिदृश्य है? यदि ऐसा है: http://stackoverflow.com/questions/2546207/does-sqlalchemy-have-an-equivalent-of-djangos-get-or-create –
@ डेमियनब्रैच, प्रतिक्रिया के लिए धन्यवाद, लेकिन नहीं, यह नहीं है । – missingfaktor
@missingfaktor आप कैसे जानते हैं कि यह पहले से मौजूद है या नहीं? प्राथमिक कुंजी के आधार पर? या कुछ अन्य अनूठी कुंजी? – jadkik94