2013-06-13 4 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'")을 사용하면 문제가 없습니다. 아무도 비슷한 문제에 직면 했습니까? 누구나 잘못된 생각이있을 수 있습니다. 모든 포인터가 도움이 될 것입니다. 도움이 될 수Flask-SQLAlchemy .count() 및 .all()에 대한 다른 레코드 수

정보
나는 MS SQL 서버 2008 R2를 사용 FreeTDS를/pyodbc을 사용하여 접근하고있다. 나는 데이터베이스를 제어하지 않으며 변경할 수 없다.

미리 감사드립니다.

+3

당신이 해고되고 있는지 SQL 문을 볼 수 있도록 TRUE ''에'SQLALCHEMY_ECHO'를 켜십시오, 다음 경우에 볼 수있는 모양을 가지고있는' .all()'질의가 예상치 못한 일을하고있다. – Doobeh

+6

한 가지 명심해야 할 것은 쿼리가 동일한 기본 키가있는 둘 이상의 행을 반환하면 전체 엔터티 클래스에 대한 쿼리가 해당 행의 중복을 제거한다는 것입니다. 그러나 count()는 기본 키에 상관없이 반환되는 실제 행 수를 표시합니다. – zzzeek

+0

pymssql (http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html 아래 목록 참조)과 같은 다른 드라이버 중 하나를 사용해보고 문제가 지속되는지 확인할 수 있습니까? 나는 pyodbc가 SQL 서버로 시도했을 때 몇 가지 단점을 보여주고 있었다는 것을 기억합니다. 그러나 시간이 지났으며 SQLAlchemy를 통하지 않고 직접 사용했습니다. 그래서 더 안정적이고 신속한 ceODBC로 전환했습니다. 하지만 불행히도 SQLAlchemy에서 지원하지 않습니다. 아직도 나는 다른 옵션 중 하나를 시도 할 것이다. –

답변

0

목록을 반환 all()와 숫자를 반환 count() 기능 ...