【发布时间】:2016-12-28 19:34:58
【问题描述】:
我正在尝试返回特定 user_id 的所有行。
当我在下面运行查询#1 和#2 时,它只返回它找到的第一行,即使我指定了.all()。
当我使用.with_entities 作为案例#3 时,所有行都按预期返回。
我希望能有第二双眼睛。谢谢你。
如果重要的话,我正在使用 MySQLDB(5.5.47 版本)、Flask 0.10.1 和 SQL-Alchemy 2.1。
-
只返回第一行:
result = MyUserClass.query.filter_by(user_id=self.user_id).all() -
这也只返回第一行:
result = MyUserClass.query.filter(MyUserClass.user_id == self.user_id).all() -
按预期工作并返回所有行:
MyUserClass.query.filter_by(user_id=self.user_id).with_entities(MyUserClass.myColumn).all()
【问题讨论】:
-
user_id是否标记为主列? -
嗨,没有 user_id 不是主键。一定要吗?
-
我正在尝试找出这种行为的原因。如果它被标记为主键或对其具有唯一性约束,则可能表明存在问题。
-
你能添加
MyUserClass的完整定义吗? -
啊哈!我发现了问题。马丁,你是对的! user_id 在类定义中设置为主键,但在 MySQLDB 表定义中没有。
标签: python-3.x flask sqlalchemy flask-sqlalchemy