2013-06-13 27 views
5

Flask-SQLAlchemy不同的記錄計數在SQLAlchemy中,ModelName.query.filter_by(field_name=value).count()返回正確的記錄計數,但ModelName.query.filter_by(field_name=value).all()只返回單個記錄。做一個db.session.execute("SELECT * FROM table_name WHERE field_name = 'value'")工作正常。有人遇到過類似的問題嗎?有沒有人有任何想法可能是錯誤的。任何指針都會有幫助。這可能是有益的對於.count()和.all()

信息
我使用MS SQL Server 2008 R2和使用freetds的/ pyodbc訪問它。我不控制數據庫,也無法更改它。

在此先感謝。

+3

嘗試打開'SQLALCHEMY_ECHO'到TRUE;所以你可以看到被解僱哪些SQL語句,再看看,看看是否' .all()'查詢正在做一些意想不到的事情。 – Doobeh

+6

需要記住的一件事是,如果查詢返回多個具有相同主鍵的行,則對整個實體類的查詢將取消這些行的複製。但count()將顯示實際的行數,無論主鍵都會返回。 – zzzeek

+0

您可以嘗試其他驅動程序之一,如pymssql(請參閱http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html下的列表),看看問題是否仍然存在?我記得當我用SQL Server試用它時,pyodbc顯示出一些怪癖。但是已經有一段時間了,我只是直接使用它,而不是通過SQLAlchemy。這就是爲什麼我切換到更可靠和更快速的ceODBC。但不幸的是不支持SQLAlchemy。不過我會嘗試一下其他選項。 –

回答

0

功能all()返回一個列表和count()返回一個數字...