使用__dict__遍历Flask SQLAlchemy对象是一种不好的做法吗?

时间:2019-04-18 17:39:03

标签: python sqlalchemy flask-sqlalchemy

要在Flask上建立动态的用户更新路线,我使用了__dict__来遍历用户Flask SQLAlchemy对象:

parameters = ['name'] # Valid parameters after the Regex filter was applied

for parameter in parameters:
    user.__dict__[parameter] = request.form.get(parameter)

我这样做是为了避免使用ifs。为了确保parameters中仅存在有效参数,我应用了Regex模式来过滤request中针对用户路由的有效参数,并在doc字符串中记录了这方面。

我要问是否使用__dict__遍历Flask SQLAlchemy对象是否不好?因为如果我打印user.__dict__,我会收到所有参数,即使那些不在Regex上的参数也是如此过滤器,ig,密码,创建日期等;并且永远不要通过此路由进行更新。

我发现另一个approach使用SQLAlchemy中的get all column,但我认为最后它与我使用的方法类似...

糟糕:实施的路由可以使用同一路由更新来自用户或所有用户的特定属性

1 个答案:

答案 0 :(得分:0)

我建议您调查marshmallow-sqlalchemy来管理这类事情。我发现很少有问题的用例,__dict__是最好的解决方案。

以下是使用它的示例应用程序:How do I produce nested JSON from database query with joins? Using Python / SQLAlchemy