namedtuple中查询,属性错误

Query in namedtuple, attribute error

使用 namedtuple,我正在尝试向其中查询。

build = namedtuple('build', 'x y z')
build(x=DB.query(x).filter(x.id == 'query').first(),
      y=DB.query(y).filter(y.id == 'query').first(),
      z=DB.query(z).filter(z.id == 'query').first())

当我实际尝试使用 print build.x.id 访问 x 时,我得到:

AttributeError: 'property' object has no attribute 'id'

我认为这与在 namedtuple 中进行查询有关,我只是做错了或者它不是为了这样做而设计的。我用谷歌搜索了一下,但没有看到太多相关内容。

找到了一个不使用 namedtuple 的解决方法,因为我认为这不适合我的用例(即,我认为它不支持嵌套的 dicts/objects 而不使用 finangling)

发现了这个问题,Convert Python dict to object? 并决定调整我的代码以改用它。

build = {'x': DB.query(x).filter(x.id == 'query').first()}
build = bunchify(build)

现在允许我做

>>> print build.x.id
27

无缝衔接。

简单胜于复杂。