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

SqlAlchemy non restituisce tutte le righe quando si esegue una query sull'oggetto tabella, ma restituisce tutte le righe quando si interroga la colonna dell'oggetto tabella

Mi sono imbattuto in una situazione simile in cui .all() dell'oggetto query SQLAlchemy non restituisce tutte le righe della tabella (ne mancano sempre alcune) ma .count() la chiamata fornisce il conteggio corretto. Dopo aver approfondito un po' di più, mi sono reso conto che la dichiarazione del modello deviava dallo schema della tabella effettivo in quel database. Innanzitutto, il database ha una singola colonna di chiave primaria nello schema ma la dichiarazione del modello ha una chiave primaria di composizione (in caso inverso come la tua), inoltre ho perso un vincolo univoco a 3 colonne dove lo schema della tabella lo ha.

Quello che è successo lì nel mio caso è stato che ogni volta che SQL Alchemy interroga il database ha ottenuto tutte le righe dietro le quinte ma a causa della composizione errata la chiave primaria nella mia dichiarazione del modello ha impedito il caricamento di alcune righe nella sessione di SQLAlchemy (le chiavi primarie per definizione identificano in modo univoco gli oggetti e di conseguenza non caricherà due oggetti con la stessa chiave primaria nella sessione, quindi elimina quelle colonne di composizione che hanno gli stessi valori anche nel database hanno PK diversi.)

In conclusione, ricontrollare la dichiarazione del modello con lo schema del database per assicurarsi che siano sincronizzati è la prima risposta a questo tipo di problemi.