鍍金池/ 問(wèn)答/Python  數(shù)據(jù)庫(kù)/ Python SQLAlchemy 中,怎么用變量表示字典的KEY

Python SQLAlchemy 中,怎么用變量表示字典的KEY

問(wèn)題一

key = 'name'
db.session.query(Student).filter(Student[key] == value)

報(bào)錯(cuò)如下:

 stu_modify = db.session.query(Student).filter(Student[m_key] == m_value)
TypeError: 'DefaultMeta' object has no attribute '__getitem__'

是不是Student模型的的字段不能用變量表示?

問(wèn)題二:

db.session.query(Student).filter(Student.name == m_value).first()

報(bào)錯(cuò): 不可以遍歷QueryBase

這個(gè)是為什么?

回答
編輯回答
咕嚕嚕
是不是Student模型的的字段不能用變量表示?

可以。

不過(guò),先說(shuō)一點(diǎn),在 Python 中: obj['a']obj.a 是不一樣的,前者是 __getitem__ ,后者是 __getattribute__

你要用變量的話,可以 getattr(Student, key) == value ,不過(guò),查詢一般不會(huì)這樣用。

報(bào)錯(cuò): 不可以遍歷QueryBase

看不出為什么,你查詢那句是沒(méi)問(wèn)題的。

2017年3月1日 14:51
編輯回答
別傷我
filter_by(**{key: value})
2018年7月21日 01:04