sql >> Databasteknik >  >> RDS >> Mysql

SqlAlchemy returnerar inte alla rader när jag frågar tabellobjekt, men returnerar alla rader när jag frågar tabellobjekt kolumn

Jag stötte på en liknande situation där SQLAlchemy-frågeobjektets .all() returnerar inte alla rader i tabellen (det saknas alltid några) men .count() samtalet ger rätt räkning. Efter att ha grävt i det lite mer insåg jag att modelldeklarationen avvek från det faktiska tabellschemat i den databasen. För det första har databasen en enda primärnyckelkolumn i schemat men modelldeklarationen har en kompositionsprimärnyckel (i omvända fall som din), även jag missade en 3-kolumns unik begränsning där som tabellschemat har det.

Det som hände där i mitt fall var att närhelst SQL Alchemy frågade databasen fick den alla rader bakom scenen, men på grund av den felaktiga sammansättningen har primärnyckeln i min modelldeklaration förhindrat att vissa rader laddas in i SQLAlchemys session (primära nycklar per definition identifiera unikt objekten och det kommer inte att ladda två objekt med samma primärnyckel i session som ett resultat, därför slänger den ut de sammansättningskolumner som har samma värden även i databasen de har olika PK:er.)

Sammanfattningsvis, dubbelkolla modelldeklaration med databasschema för att se till att de är synkroniserade är det första svaret från den här typen av problem.



  1. Optimeringströsklar – gruppering och aggregering av data, del 3

  2. hämta flera kolumner gruppera efter datumintervall

  3. Billigaste sättet att avgöra om en MySQL-anslutning fortfarande är vid liv

  4. På hur många språk är Null inte lika med någonting, inte ens Null?