Item
sınıfında bir birincil anahtar ve otomatik olarak oluşturulmuş bir sınıf var. Şimdi başka bir dış kaynaktan veri okuyorum, bir Item
nesnesi oluşturdum ve bu nesnenin zaten items
tablosumda olup olmadığını kontrol etmem gerekiyor. Nasıl yaparım?SQLAlchemy:
cevap
Aynı özelliklere sahip olan öğeleri sorgulayabilir ve sayının sıfırdan büyük olup olmadığını kontrol edebilirsiniz.
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
Herhangi bir eşleşme bulunmazsa count() sıfırlanır ve aksi halde pozitif bir tam sayı olduğu için '> 0 'gereksizdir. – kalu
@kalu: "Açık, örtük olmaktan iyidir." - Python'un Zen'i –
Sayımı kullanmak veritabanının daha fazla iş yapmasını gerektiriyor. Verimli bir yöntem için cevabımı aşağıya bakın. – Salami
Buna benzer bir şey deneyebilirsiniz: Bu işlemekle üzerinde etki yapar, sonra geri alır sorunu var
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'
...
başka seçeneği kontrol edebilirsiniz eğer Ayrı ayrı özellikler, daha sonra bu işe yarayabilir:
session.query(Item).filter_by(x=item.x, y=item.y).count() == 0
En verimli yöntem kullanmaktır. exists()
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
- 1. SQLAlchemy
- 2. SQLAlchemy
- 3. sqlalchemy
- 4. SQLAlchemy
- 5. sqlalchemy
- 6. SQLAlchemy
- 7. SQLAlchemy
- 8. SQLAlchemy
- 9. SQLAlchemy
- 10. SqlAlchemy
- 11. SQLAlchemy
- 12. sqlalchemy
- 13. SQLAlchemy
- 14. SqlAlchemy:
- 15. sqlalchemy
- 16. SQLAlchemy
- 17. SQLAlchemy
- 18. SQLAlchemy
- 19. sqlalchemy
- 20. SQLAlchemy
- 21. SQLAlchemy
- 22. SQLAlchemy
- 23. SQLAlchemy - Taşıma Kısıtlama Başarısızlıkları sqlalchemy ile
- 24. SQLAlchemy özüne
- 25. sqlalchemy bildirgesinin
- 26. Flask-SQLAlchemy
- 27. SQLAlchemy: Benim SQLAlchemy uygulamasında olmayan benzersiz bir değer
- 28. Ben sqlalchemy ile birçok satırı ekleyerek ediyorum SQLAlchemy
- 29. SQLAlchemy kullanarak yeni bir veritabanı nasıl oluşturulur? Sqlalchemy ile
- 30. SQLAlchemy içindeki Etiketleri Kullanma() SQLAlchemy İçerisindeki Madde Kullanımı
bir '' get_or_create'' senaryo var mı? Eğer öyleyse: http://stackoverflow.com/questions/2546207/does-sqlalchemy-have-an-equivalent-of-djangos-get-or-create –
@DemianBrecht, yanıt için teşekkürler, ama hayır, değil . – missingfaktor
@missingfaktor zaten var olup olmadığını nasıl anlarsınız? Birincil anahtara göre mi? Ya da başka bir benzersiz anahtar? – jadkik94