【问题标题】:Is it a bad practice to iterate over a Flask SQLAlchemy object using __dict__?使用 __dict__ 迭代 Flask SQLAlchemy 对象是一种不好的做法吗?
【发布时间】:2019-09-09 02:17:57
【问题描述】:

为了在 Flask 上构建动态用户更新路由,我使用 dunder __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 中仅存在有效参数,我应用了一个正则表达式模式,用于过滤在request 中接收到的有效参数以用于用户路由,并且我已在文档字符串中记录了这一方面。

我问是否使用__dict__ 遍历 Flask SQLAlchemy 对象是一种不好的做法,因为如果我打印user.__dict__,我会收到所有参数,即使是那些不在 Regex 过滤器上的参数,ig,密码、创建日期等;并且永远不应该通过这条路线更新。

我发现另一个 approach 使用获取 SQLAlchemy 中的所有列,但我认为最后它类似于我正在使用的方法...

Obs:实现的路由可以更新用户或所有用户的特定属性,使用相同的路由

【问题讨论】:

标签: python sqlalchemy flask-sqlalchemy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多