Python& Peewee - 动态where子句

时间:2017-08-19 21:51:26

标签: python mysql flask peewee

我目前正在使用Flask& Peewee。 Imho是一个很好的组合,但现在我来到了一个小便似乎“弱”的地步。为我的项目。可能是我,以错误的方式思考某事:)

以下代码很好地描述了我的问题。

# 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子句无法使用 查询有用的结果。通过数据库表引用,我的意思是像 databasetable .fieldname。

所以问题是我如何在简单的dict / list(键值对)的基础上动态创建一个有效的where子句。

1 个答案:

答案 0 :(得分:1)

只需使用DatabaseTable._meta.fields [field_name]或getattr(DatabaseTable,field_name)即可获取字段对象。您可以通过将字段对象与运算符和值组合来动态构造表达式。