Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SqlAlchemy nie zwraca wszystkich wierszy podczas zapytania o obiekt tabeli, ale zwraca wszystkie wiersze, gdy wysyłam zapytanie o kolumnę obiektu tabeli

Wpadłem w podobną sytuację, w której obiekt zapytania SQLAlchemy .all() nie zwraca wszystkich wierszy w tabeli (zawsze brakuje niektórych), ale .count() wywołanie daje poprawną liczbę. Po dokładniejszym zagłębieniu się w to zdałem sobie sprawę, że deklaracja modelu odbiega od rzeczywistego schematu tabeli w tej bazie danych. Po pierwsze, baza danych ma pojedynczą kolumnę klucza podstawowego w schemacie, ale deklaracja modelu ma klucz podstawowy kompozycji (w odwrotnym przypadku, tak jak w twoim), również przegapiłem ograniczenie unikatowości trzech kolumn, które ma w schemacie tabeli.

W moim przypadku za każdym razem, gdy SQL Alchemy wysyła zapytanie do bazy danych, wszystkie wiersze sąza kulisami ale z powodu nieprawidłowej kompozycji klucz podstawowy w mojej deklaracji modelu uniemożliwiłwczytanie niektórych wierszy do sesji SQLAlchemy (klucze podstawowe z definicji jednoznacznie identyfikują obiekty i w rezultacie nie załaduje dwóch obiektów z tym samym kluczem podstawowym w sesji, dlatego odrzuca te kolumny kompozycji, które mają te same wartości, nawet w bazie danych, w której mają różne PK.)

Podsumowując, dwukrotnie sprawdź deklarację modelu ze schematem bazy danych, aby upewnić się, że są zsynchronizowane, jest pierwszą odpowiedzią na tego rodzaju problemy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik explode() do pracy z ciągami w MySQL

  2. Zależne rozwijane pole CakePHP 3

  3. Odmowa dostępu dla MYSQL ERROR 1045

  4. Nie można wypełnić połączonej listy rozwijanej za pomocą Ajax i Javascript

  5. Jakie jest znaczenie graweru (AKA backtick) cytowanych znaków w MySQL?