2013-06-13 12 views
5

In SQLAlchemy, ModelName.query.filter_by(field_name=value).count() restituisce il conteggio dei record corretto, ma ModelName.query.filter_by(field_name=value).all() restituisce solo un singolo record. Fare un db.session.execute("SELECT * FROM table_name WHERE field_name = 'value'") funziona correttamente. Qualcuno ha affrontato un problema simile? Qualcuno ha idea di cosa potrebbe essere sbagliato. Qualsiasi suggerimento aiuterà.Flask-SQLAlchemy conteggio dei record diverso per .count() e .all()

informazioni che potrebbero essere utili
sto usando MS SQL Server 2008 R2 e accedervi utilizzando FreeTDS/pyodbc. Non controllo il database e non posso cambiarlo.

Grazie in anticipo.

+3

provare a girare 'SQLALCHEMY_ECHO' a' true' in modo da poter vedere ciò che le istruzioni SQL vengono licenziato, allora date un'occhiata per vedere se il ' .all() 'query sta facendo qualcosa di inaspettato. – Doobeh

+6

una cosa da tenere a mente è che se una query restituisce più di una riga con la stessa chiave primaria, una query contro l'intera classe entità le duplicherà. Ma count() mostrerà il numero effettivo di righe che verrebbero restituite indipendentemente dalla chiave primaria. – zzzeek

+0

Puoi provare uno degli altri driver come pymssql (vedi l'elenco sotto http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html) e vedere se il problema persiste? Ricordo che pyodbc stava mostrando alcune stranezze quando l'ho provato con SQL Server. Ma è passato un po 'di tempo e l'ho usato solo direttamente, non tramite SQLAlchemy. Ecco perché sono passato a ceODBC che era molto più affidabile e veloce. Ma sfortunatamente non è supportato da SQLAlchemy. Ancora proverei una delle altre opzioni che hai. –

risposta

0

La funzione all() restituire una lista e count() restituire un numero ...

Problemi correlati