SQLAlchemy查询返回无

时间:2019-08-06 20:08:06

标签: python sql postgresql sqlalchemy

我正在尝试通过ID检查是否已通过这种方式在数据库中创建了某些条目:

def if_entry_exist(self, uid, table_name, by="id"):

    tb = self.get_table_by_name(table_name)
    #t = self.session.query(tb[0]).filter(tb[0].c[by].key==uid).scalar() 
    #quer = self.session.query(tb[0]).filter(tb[0].c[by].key == uid)
    #print(self.session.query(quer.exists()).scalar())

    #exists = self.session.query(tb[0]).filter(tb[0].c[by].key==uid).scalar() is not None
    return bool(self.session.query(tb[0]).filter(tb[0].c[by].key==uid).first())

我尝试了不同类型的查询,但是没有结果。当我确认ID相同时,它总是返回false或None。

1 个答案:

答案 0 :(得分:1)

问题是您正在将Column的键与uid而不是列本身进行比较。关键是"id",或者是某个呼叫中的by,因此...key == uid很可能会在Python中求值为False,这意味着您的查询是有效地

return bool(self.session.query(tb[0]).filter(False).first())

这应该很清楚为什么查询从不返回结果。只需删除键属性访问并使用Column进行比较即可:

return bool(self.session.query(tb[0]).filter(tb[0].c[by] == uid).first())