2016-12-28 30 views
0

我試圖返回特定user_id的所有行。 當我在下面運行查詢#1和#2時,它只返回找到的第一行,即使我指定了.all()Flask使用「.all()」的SQLAlchemy查詢過濾器不會返回所有行

當我在案例#3中使用.with_entities時,所有行按預期返回。

我會欣賞第二雙眼睛。謝謝。

我正在使用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. 作品,並返回預期的所有行:

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

'user_id'被標記爲主列嗎? –

+0

嗨,沒有user_id不是主鍵。它必須是? – VanBasten

+0

我試圖找到行爲的原因。如果它被標記爲主鍵或者具有唯一性約束,那可能指向問題。 –

回答

1

正如Martijn Pieters指出的,used_id列被標記爲類定義中的主鍵列(但不在MySQLDB中)。添加一個新列並將其作爲主鍵可解決問題。

+0

您應該以您的解決方案作爲答案。 –