使用“.all()”的Flask SQLAlchemy查询过滤器不返回所有行

时间:2016-12-28 19:34:58

标签: python-3.x flask sqlalchemy flask-sqlalchemy

我正在尝试返回特定user_id的所有行。 当我运行下面的查询#1和#2时,它只返回它找到的第一行,即使我指定.all()

当我在#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 个答案:

答案 0 :(得分:1)

正如Martijn Pieters指出的那样,

used_id列被标记为类定义中的主键列(但不在MySQLDB中)。添加新列并使其成为主键可以解决问题。