![](/img/trans.png)
[英]SQLAlchemy returns None for a query that returns a value in DB manager
[英]SQLAlchemy query returns None
我正在嘗試通過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。
問題在於您正在將Column
的鍵與uid
進行比較,而不是列本身。 最關鍵的是"id"
,或者是by
恰好是處於通話狀態,所以...key == uid
很可能會評估為False
在Python,這意味着你的查詢是有效的
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())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.