Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 Flask SQLAlchemy.count()和.all()的不同记录计数_Sql Server 2008_Sqlalchemy_Flask_Pyodbc_Freetds - Fatal编程技术网

Sql server 2008 Flask SQLAlchemy.count()和.all()的不同记录计数

Sql server 2008 Flask SQLAlchemy.count()和.all()的不同记录计数,sql-server-2008,sqlalchemy,flask,pyodbc,freetds,Sql Server 2008,Sqlalchemy,Flask,Pyodbc,Freetds,在SQLAlchemy中,ModelName.query.filter\u by(field\u name=value).count()返回正确的记录计数,但ModelName.query.filter\u by(field\u name=value).all()只返回一条记录。执行一个db.session.execute(“SELECT*FROM table_name,其中field_name='value')”工作正常。有人遇到过类似的问题吗?有人知道可能出了什么问题吗。任何指示都会有帮助

在SQLAlchemy中,
ModelName.query.filter\u by(field\u name=value).count()
返回正确的记录计数,但
ModelName.query.filter\u by(field\u name=value).all()只返回一条记录。执行一个
db.session.execute(“SELECT*FROM table_name,其中field_name='value')”
工作正常。有人遇到过类似的问题吗?有人知道可能出了什么问题吗。任何指示都会有帮助

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


提前谢谢。

函数
all()
返回一个列表和
count()
返回一个数字…

我想我可能遇到了同样的问题。我的查询执行多个联接,这样原始结果就可以返回同一主键的多行,每行由.count()计数,但是当调用.all()时,主键上会应用一个distinct,并且只提取唯一的行,而.all()列表上的记录数与.count()不同

这应该是平等的:

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

致以最诚挚的问候

尝试将
SQLALCHEMY\u ECHO
转换为
True
,这样您就可以看到触发了哪些SQL语句,然后查看
.all()
查询是否在做意外的事情。要记住的一点是,如果查询返回多个具有相同主键的行,对完整实体类的查询将消除这些行的重复。但是count()将显示返回的实际行数,而不考虑主键。您是否可以尝试其他驱动程序,如pymssql(请参见下面的列表),看看问题是否仍然存在?我记得当我用SQL Server尝试pyodbc时,它显示出一些怪癖。但是已经有一段时间了,我只是直接使用它,而不是通过SQLAlchemy。这就是为什么我改用ceODBC的原因,它更可靠,速度更快。但不幸的是,SQLAlchemy不支持。尽管如此,我还是会尝试您的其他选项。@MirNazim:不向我们显示您正在查询的数据和SQLAlchemy映射(SQL模式以及Doobeh提到的通过SQLAlchemy_ECHO获得的调试日志也会很有用),除了猜测之外,其他人很难回答这个问题。我找不到发生这种情况的原因,并最终在不起作用的情况下使用原始SQL查询(我在截止日期前)。当用作原始SQL时,
SQLALCHEMY\u ECHO=True
输出的查询工作得非常好。此外,我无法共享数据或日志。数据属于政府,我们的合同没有明确规定任何数据(包括日志、模式,甚至是我们自己制作的虚拟测试数据)都不能移动到我们工作的大楼外。我想问这个问题的人知道这一点。他要求在记录计数上有所不同。我也面临同样的问题。