2013-06-13 20 views
5

SQLAlchemy'de ModelName.query.filter_by(field_name=value).count() doğru kayıt sayısını döndürür, ancak ModelName.query.filter_by(field_name=value).all() yalnızca tek bir kayıt döndürür. db.session.execute("SELECT * FROM table_name WHERE field_name = 'value'") yapılıyor. Benzer bir problemle karşılaştı mı? Neyin yanlış olabileceği hakkında bir fikri olan var mı? Herhangi bir işaretçi yardımcı olacaktır. yararlı olabilirFlask-SQLAlchemy için farklı kayıt sayısı .count() ve .all()

Bilgi
MS SQL Server 2008 R2 kullanarak ve FreeTDS/pyodbc kullanarak erişme. Veritabanını kontrol etmiyorum ve değiştiremiyorum.

Şimdiden teşekkürler.

+3

sen ateş olmak hangi SQL ifadeleri görebilirsiniz TRUE 'için' SQLALCHEMY_ECHO' açmayı deneyin, sonra olmadığını görmek için bir göz ' .all() 'sorgusu beklenmedik bir şey yapıyor. – Doobeh

+6

akılda tutulması gereken bir şey varsa, bir sorgu aynı birincil anahtarla birden çok satır döndürürse, tam varlık sınıfıyla ilgili bir sorgu bu satırların kopyasını kaldıracaktır. Ancak, count(), birincil anahtara bakılmaksızın döndürülen gerçek satır sayısını gösterir. – zzzeek

+0

Pymssql (http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html altındaki listeye bakın) gibi diğer sürücülerden birini deneyebilir ve sorunun devam edip etmediğini görebilir misiniz? Pyodbc'in SQL Server ile denediğimde bazı tuhaflıklar olduğunu hatırlıyorum. Ama biraz zaman geçti ve SQLAlchemy ile değil, sadece doğrudan kullandım. Bu yüzden çok daha güvenilir ve hızlı olan ceODBC'ye geçtim. Ama ne yazık ki SQLAlchemy tarafından desteklenmiyor. Yine de sahip olduğunuz diğer seçeneklerden birini denerdim. –

cevap

0

listesini döndürür all() ve bir numara iade count() fonksiyonu ...