在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访问它。我不控制数据库,也无法更改它。
提前致谢。
答案 0 :(得分:0)
我想我可能也遇到了同样的问题。我的查询执行多次Join,原始结果可以带回同一主键的多行,每一行都由.count()计数,但是,当您调用.all()时,主键上将应用一个唯一的字符,并且唯一读取行,.all()列表上的记录数与.count()不同。
这应该等于:
query.distinct().count() == query.all()
最诚挚的问候
答案 1 :(得分:-1)
函数all()
返回一个列表,count()
返回一个数字......