AttributeError错误:'KeyedTuple'对象没有属性'json'

时间:2013-10-01 18:53:28

标签: python sqlalchemy

我是Python新手并探索SQLAlchemy。这是我的代码

class Test(Base):
     __tablename__ = 'test'
     __public__ = ('my_id', 'name')
     my_id = Column(Integer, primary_key=True)
     name = Column(String)
     def __init__(self, id, name):
         self.my_id = id
         self.name = name
     def __repr__(self):
        return "<User('%d','%s')>" % (self.id, self.name)
     @property   
     def json(self):    
        return to_json(self, self.__class__)

users= cess.query(Test.my_id, Test.name).order_by(Test.my_id).distinct().all()
for c in users:
    print c.json

但我收到错误AttributeError: 'KeyedTuple' object has no attribute 'json'我做错了什么。

亲切的问候

1 个答案:

答案 0 :(得分:6)

您的查询是

cess.query(Test.my_id, Test.name)

因此您不会因此获得Test个实例。这意味着您的结果不具有json属性。相反,您会获得KeyedTuple个带有您请求的属性的元组,即my_idname。要使其工作,您可以将查询更改为

cess.query(Test)