W SQLAlchemy, ModelName.query.filter_by(field_name=value).count()
zwraca poprawną liczbę rekordów, ale ModelName.query.filter_by(field_name=value).all()
zwraca tylko jeden rekord. Wykonanie db.session.execute("SELECT * FROM table_name WHERE field_name = 'value'")
działa dobrze. Czy ktoś miał podobny problem? Czy ktoś ma pojęcie, co może być nie tak. Wszelkie wskazówki pomogą.Flask-SQLAlchemy inna liczba rekordów dla .count() i .all()
informacje, które mogą być pomocne
używam MS SQL Server 2008 R2 i dostępu do niego za pomocą FreeTDS/pyodbc. Nie kontroluję bazy danych i nie mogę jej zmienić.
Z góry dziękuję.
spróbuj wyłączyć 'SQLALCHEMY_ECHO' do' true' więc można zobaczyć, co SQL instrukcje są opalane, a potem rzucić okiem, aby zobaczyć, czy ' .all() 'query robi coś nieoczekiwanego. – Doobeh
należy pamiętać o tym, że jeśli zapytanie zwraca więcej niż jeden wiersz z tym samym kluczem podstawowym, zapytanie do całej klasy encji spowoduje zduplikowanie tych wierszy. Ale count() pokaże faktyczną liczbę wierszy, które zostaną zwrócone bez względu na klucz podstawowy. – zzzeek
Czy możesz wypróbować jeden z innych sterowników, takich jak pymssql (zobacz listę pod http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html) i sprawdzić, czy problem nadal występuje? Pamiętam, że pyodbc wykazywał pewne dziwactwa, gdy próbowałem go z SQL Server. Ale minęło trochę czasu i użyłem go tylko bezpośrednio, nie przez SQLAlchemy. Dlatego przerzuciłem się na CeODBC, który był znacznie bardziej niezawodny i szybszy. Ale niestety nie obsługiwane przez SQLAlchemy. Mimo to wypróbowałbym jedną z pozostałych opcji, jakie masz. –