使用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())


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

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


我认为这与在namedtuple中进行查询有关,而我只是做错了,或者它并非旨在做到这一点。我已经在Google周围搜索,但对此却看不到什么。

最佳答案

找到了一种不使用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


无缝地。

简单胜于复杂。

关于python - 在namedtuple中查询,属性错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32172475/

10-11 22:03
查看更多