filter_by(** kwargs)
换句话说,该函数将允许你为它提供任何关键字参数。这就是为什么可以在代码中使用任何关键字的原因:sqlAlchemy基本上将参数视为值的字典。有关关键字参数的更多信息,请参见Python教程。
这样,sqlAlchemy的开发人员就可以以字典形式接收任意一堆关键字参数。但是,你要求的却相反:你可以将任意一堆关键字参数传递给函数吗?
事实证明,在Python中,你可以使用称为unpacking的功能。只需创建参数字典并将其传递给以开头的函数**,如下所示:
kwargs = {'hometown': 'New York', 'university' : 'USC'}
User.query.filter_by(**kwargs)
# This above line is equivalent to saying...
User.query.filter_by(hometown='New York', university='USC')