我目前正在与 Flask & Peewee 合作。恕我直言,这是一个很好的组合,但现在我已经到了 peewee 对于我的项目来说似乎“弱”的地步。可能是我,以错误的方式思考一些事情:)
下面的代码很好地描述了我的问题。
# dynamic data from somewhere outside my application
# (does not really matter from where)
# how data really look like
dynamicInput = [(fieldname1 == 'abc'),(fieldname2 == 'def')]
# how data should look like (in a dynamic way)
dynamicInput = [(databasetable.fieldname1 == 'abc'), (databasetable.fieldname2 == 'def')]
# query database with peewee query
model = self.action_meta.model_clothing.select().where(dynamicInput).get()
由于缺少数据库表引用,where 子句无法使用 查询有用的结果。通过数据库表引用,我的意思是类似数据库表.fieldname。
所以问题是如何基于简单的字典/列表(键值对)动态创建有效的 where 子句。
最佳答案
只需使用DatabaseTable._meta.fields[field_name]或getattr(DatabaseTable, field_name)即可获取字段对象。您可以通过将字段对象与运算符和值组合来动态构造表达式。
关于Python&Peewee - 动态 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45776599/