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
无缝衔接。
简单胜于复杂。
使用 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
无缝衔接。
简单胜于复杂。