我一直在尝试弄清楚如何将request.args传递给sqlalchemy过滤器。
我认为这应该可以工作:
model.query.filter(**request.args).all()
但它抛出了错误:
TypeError: <lambda>() got an unexpected keyword argument 'userid'
当userid或其他get参数存在时。
根据这篇文章 - https://dev59.com/CmIk5IYBdhLWcg3wMLiI - 您可以将一个字典传递给过滤器函数。
有什么想法我做错了什么吗?
非常感谢 :)
更新:非常感谢下面的发帖者,但现在它报以下错误:
ProgrammingError: (ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY tblclients.clientname' at line 3") 'SELECT favourites.id AS favourites_id, favourites.userid AS favourites_userid, favourites.clientid AS favourites_clientid, favourites.last_visit AS favourites_last_visit \nFROM favourites INNER JOIN tblclients ON tblclients.clientid = favourites.clientid \nWHERE favourites.userid = %s ORDER BY tblclients.clientname' ([u'41'],)
有什么想法吗?
request.args.to_dict()
是正确的做法,而dict(request.args)
则不正确,因为它会生成一个值由列表组成的字典。 - Red-Tune-84