Mysql
 sql >> база данни >  >> RDS >> Mysql

SqlAlchemy не връща всички редове при заявка за обект на таблица, но връща всички редове, когато заявявам колона за обект на таблица

Попаднах в подобна ситуация, при която SQLAlchemy обект на заявка .all() не връща всички редове в таблицата (винаги липсва някои), но .count() обаждането дава правилния брой. След като се зарових още малко, разбрах, че декларацията на модела се отклонява от действителната схема на таблицата в тази база данни. Първо, базата данни има една колона с първичен ключ в схемата, но декларацията на модела има първичен ключ за композиция (в обратен случай като вашия), също така пропуснах уникално ограничение от 3 колони, където схемата на таблицата го има.

Това, което се случи в моя случай, беше, че всеки път, когато SQL Alchemy отправи заявка към базата данни, тя получи всички редове зад сцената, но поради неправилния първичен ключ на състава в моята декларация на модела предотврати зареждането на някои редове в сесията на SQLAlchemy (първичните ключове по дефиниция уникално идентифицират обектите и в резултат на това няма да зареди два обекта с един и същ първичен ключ в сесията, следователно изхвърля тези съставни колони, които имат еднакви стойности дори в базата данни, те имат различни PK.)

В заключение, проверете двойно декларацията на модела със схемата на базата данни, за да се уверите, че са синхронизирани, е първият отговор при този вид проблеми.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете двупосочна таблица в MySql

  2. WebSecurity.CreateAccount не работи за MySQL

  3. Свързване на 2 таблици с идентификатор на външен ключ

  4. Заявка от квадратчета за отметка

  5. Справяне с вложени набори в mysql?