Sqlalchemy返回元组

时间:2015-12-23 17:58:59

标签: python flask sqlalchemy

我有两张桌子:

class Wishlist(db.Model):
    __tablename__ = 'wishlists'

    id = db.Column(db.Integer, primary_key=True)
    device_id = db.Column(db.Integer, nullable=False)

class Device(db.Model):
    __tablename__ = 'devices'

    id = db.Column(db.Integer, primary_key=True)
    unique_id = db.Column(db.String(255), nullable=False)

每个心愿单都有Integer字段Device.id。当我选择所有愿望清单并尝试加入Device对象进行查询时:

query = db.session.query(
        Wishlist,
        Device
    ).filter(
        ...
    ).join(
        Device,
        Device.id == Wishlist.device_id
    )

SqlAlchemy为我返回元组:

(<app.main.models.Wishlist object at 0xa5cec2c>, <app.main.models.Device object at 0xa5d14ac>)

但是如何设置像wishlist属性这样的设备对象来访问它wishlist.device.id

2 个答案:

答案 0 :(得分:3)

您在致电Wishlist时指定了Devicequery。如果您只想通过属性暴露前者,请仅指定一个。

query = db.session.query(
    Wishlist
).filter(
    ...
).join(
    Device,
    Device.id == Wishlist.device_id
)

答案 1 :(得分:2)

考虑documentation中的示例,这样的事情应该有用吗?

for (wishlist, device) in query:
    print wishlist.device_id, device.unique_id # etc...