我试图通过ID检查是否已经通过这种方式在DB中创建了一些条目:

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。

最佳答案

问题是您在比较Columnuid的键,而不是列本身。关键是"id",或者调用中碰巧有什么by,所以在Python中...key == uid很可能计算为False,这意味着您的查询是有效的

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

这就很明显为什么查询从不返回结果。只需删除key属性访问并执行与Column的比较:
return bool(self.session.query(tb[0]).filter(tb[0].c[by] == uid).first())

关于python - SQLAlchemy查询返回无,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57383297/

10-13 00:02