2013-06-13 47 views
5

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を使用してアクセスしていますが
役に立つかもしれませんFlask-SQLAlchemy .count()と.all()のレコード数が異なる

情報。私はデータベースを制御せず、それを変更することはできません。

ありがとうございます。

+3

...リストを返し、count()数を返すall()あなたは文が 'かどうかを確認するために見て、その後、解雇されているかSQL見ることができるように' true'に 'SQLALCHEMY_ECHO'を回してみてください.all() 'クエリは予期せぬことをしています。 – Doobeh

+6

覚えておくべきことは、クエリが同じ主キーを持つ複数の行を返す場合、完全なエンティティクラスに対するクエリはそれらの行を重複除外することです。しかし、count()は主キーに関係なく返される行の実際の数を表示します。 – zzzeek

+0

pymssql(http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.htmlのリストを参照)のような他のドライバの1つを試して問題が解決しないかどうか確認できますか?私はpyodbcがSQL Serverで試したときにいくつかの癖を見せていたことを覚えています。しかし、それはいくつかの時間があったし、SQLAlchemyではなく、直接使用しただけです。だから私はceODBCに切り替えた。これははるかに信頼性が高く高速だった。しかし残念ながらSQLAlchemyではサポートされていません。それでもあなたが持っている他のオプションの1つを試してみます。 –

答えて

0

機能は

関連する問題