2016-12-28 2 views
0

Я пытаюсь вернуть все строки для определенного user_id. Когда я запускаю запрос # 1 и # 2 ниже, он возвращает только первую найденную строку, хотя я указываю .all().Флажок SQLAlchemy фильтр запросов с ".all()" НЕ возвращает все строки

Когда я использую .with_entities, как в случае № 3, все строки возвращаются, как ожидалось.

Буду признателен за вторую пару глаз. Спасибо.

Я использую MySQLDB (версия 5.5.47), Flask 0.10.1 и SQL-Alchemy 2.1, если это имеет значение.

  1. Возвращает только первая строка:

    result = MyUserClass.query.filter_by(user_id=self.user_id).all() 
    
  2. Это также возвращает только первую строку:

    result = MyUserClass.query.filter(MyUserClass.user_id == self.user_id).all() 
    
  3. Works и возвращает все строки, как и ожидалось:

    MyUserClass.query.filter_by(user_id=self.user_id).with_entities(MyUserClass.myColumn).all() 
    
+1

Является ли 'user_id' помеченным как первичный столбец? –

+0

Привет, No user_id не является основным ключом. Это должно быть? – VanBasten

+0

Я пытаюсь найти причины для поведения. Если он был помечен как первичный ключ или имеет ограничение на уникальность, это может указывать на проблемы. –

ответ

1

Столбец used_id был помечен как столбец первичного ключа в определении класса (но не в MySQLDB), как указал Мартийн Питерс. Добавляя новый столбец и делая его первичным ключом, исправлена ​​проблема.

+0

Вы должны принять решение в качестве ответа. –