Saya mengalami situasi serupa di mana objek kueri SQLAlchemy .all()
tidak mengembalikan semua baris dalam tabel (selalu melewatkan beberapa) tetapi .count()
panggilan memang memberikan hitungan yang benar. Setelah menggali lebih dalam, saya menyadari bahwa deklarasi model menyimpang dari skema tabel aktual di database itu. Pertama, database memiliki satu kolom kunci utama dalam skema tetapi deklarasi model memiliki kunci utama komposisi (dalam kasus terbalik seperti milik Anda), saya juga melewatkan batasan unik 3 kolom di mana skema tabel memilikinya.
Apa yang terjadi di sana dalam kasus saya adalah bahwa setiap kali SQL Alchemy meminta database, ia mendapatkan semua baris di belakang layar tetapi karena kunci utama komposisi yang salah dalam deklarasi model saya telah mencegah beberapa baris memuat ke sesi SQLAlchemy (kunci utama menurut definisi secara unik mengidentifikasi objek dan tidak akan memuat dua objek dengan kunci utama yang sama dalam sesi sebagai hasilnya, oleh karena itu membuang kolom komposisi yang memiliki nilai yang sama bahkan dalam database mereka memiliki PK yang berbeda.)
Sebagai kesimpulan, periksa kembali deklarasi model dengan skema database untuk memastikan mereka sinkron adalah respons pertama dari masalah semacam ini.