Flask-SQLAlchemy .count()和.all()的不同记录数

时间:2013-06-13 09:28:34

标签: sql-server-2008 sqlalchemy flask pyodbc freetds

在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'")工作正常。有人遇到过类似的问题吗?有谁知道什么可能是错的。任何指针都会有所帮助。

可能有用的信息
我正在使用MS SQL Server 2008 R2并使用FreeTDS / pyodbc访问它。我不控制数据库,也无法更改它。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我想我可能也遇到了同样的问题。我的查询执行多次Join,原始结果可以带回同一主键的多行,每一行都由.count()计数,但是,当您调用.all()时,主键上将应用一个唯一的字符,并且唯一读取行,.all()列表上的记录数与.count()不同。

这应该等于:

query.distinct().count() == query.all()

最诚挚的问候

答案 1 :(得分:-1)

函数all()返回一个列表,count()返回一个数字......