Tôi đã gặp phải tình huống tương tự trong đó .all()
của đối tượng truy vấn SQLAlchemy không trả về tất cả các hàng trong bảng (luôn thiếu một số) nhưng .count()
cuộc gọi không đưa ra số lượng chính xác. Sau khi tìm hiểu kỹ hơn một chút, tôi nhận ra rằng khai báo mô hình đã lệch khỏi lược đồ bảng thực tế trong cơ sở dữ liệu đó. Đầu tiên, cơ sở dữ liệu có một cột khóa chính duy nhất trong lược đồ nhưng khai báo mô hình có khóa chính thành phần (trong trường hợp ngược lại như của bạn), tôi cũng đã bỏ lỡ một ràng buộc duy nhất 3 cột khi lược đồ bảng có nó.
Điều gì đã xảy ra ở đó trong trường hợp của tôi là bất cứ khi nào SQL Alchemy truy vấn cơ sở dữ liệu, nó đã nhận được tất cả các hàng phía sau hiện trường nhưng do khóa chính thành phần không chính xác trong khai báo mô hình của tôi đã ngăn một số hàng tải vào phiên của SQLAlchemy (các khóa chính theo định nghĩa chỉ xác định duy nhất các đối tượng và kết quả là nó sẽ không tải hai đối tượng có cùng khóa chính trong phiên, do đó nó sẽ đưa ra các cột thành phần có cùng giá trị ngay cả trong cơ sở dữ liệu mà chúng có PK khác nhau.)
Tóm lại, kiểm tra kỹ việc khai báo mô hình với lược đồ cơ sở dữ liệu để đảm bảo chúng được đồng bộ hóa là phản hồi đầu tiên từ loại vấn đề này.