Python SQLAlchemy查询返回无

Python SQLAlchemy查询返回无,python,sql,postgresql,sqlalchemy,Python,Sql,Postgresql,Sqlalchemy,我试图通过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[

我试图通过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

问题在于,您正在将的键与
uid
进行比较,而不是将列本身进行比较。键是
“id”
,或者是调用中碰巧出现的
,因此在Python中,
…key==uid
很可能会求值为
False
,这意味着您的查询是有效的

return bool(self.session.query(tb[0]).filter(False).first())
这就很明显为什么查询永远不会返回结果。只需删除键属性access并与
列进行比较即可:

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

哦,真是个错误。我测试了不同的方法,完全忘记了这一点。非常感谢你!