sql >> Database teknologi >  >> RDS >> Mysql

SqlAlchemy returnerer ikke alle rækker ved forespørgsel efter tabelobjekt, men returnerer alle rækker når jeg forespørger tabelobjektkolonne

Jeg løb ind i en lignende situation, hvor SQLAlchemy-forespørgselsobjektets .all() returnerer ikke alle rækkerne i tabellen (mangler altid nogle), men .count() opkald giver det korrekte tal. Efter at have gravet lidt mere i det, indså jeg, at modelerklæringen afveg fra det faktiske tabelskema i den database. For det første har databasen en enkelt primærnøglekolonne i skemaet, men modelerklæringen har en sammensætningsprimærnøgle (i omvendt tilfælde som din), også savnede jeg en unik begrænsning med 3 kolonner, hvor som tabelskemaet har det.

Hvad der skete der i mit tilfælde var, at hver gang SQL Alchemy forespurgte databasen, fik den alle rækkerne bag scenen, men på grund af den forkerte sammensætning har den primære nøgle i min modelerklæring forhindret, at nogle rækker indlæses i SQLAlchemys session (primære nøgler pr. definition identificerer unikt objekterne, og det vil ikke indlæse to objekter med den samme primære nøgle i session som et resultat, derfor smider den de sammensætningskolonner ud, der har samme værdier, selv i databasen, de har forskellige PK'er.)

Som konklusion, dobbelttjek modelerklæring med databaseskema for at sikre, at de er synkroniseret, er det første svar fra denne slags problemer.



  1. Indsæt/Opdater tilfældig dato i MySQL

  2. Hvordan forbinder jeg til en MySQL-database fra Clojure?

  3. Mysql problem ved oprettelse af en ny bruger

  4. Hvordan registrerer jeg daglige placeringer for en model i Django?