在namedtuple中查询,属性错误

时间:2015-08-23 23:17:41

标签: python sqlalchemy pyramid

使用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了一下,我对此并没有太多了解。

1 个答案:

答案 0 :(得分:1)

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

发现此问题Convert Python dict to object?并决定调整我的代码以使用它。

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

现在允许我这样做

>>> print build.x.id
27

的无缝连接。

简单比复杂更好。