【问题标题】:SQLAlchemy ORM load_only colomns with multiple join [duplicate]具有多个连接的 SQLAlchemy ORM load_only 列[重复]
【发布时间】:2019-02-19 03:39:36
【问题描述】:

现在我有:

class DeviceModel(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    vendor = db.Column(db.String, nullable=False)
    model = db.Column(db.String, nullable=False)
    group_id = db.Column(db.ForeignKey('device_group.id', ondelete='SET NULL'), nullable=True)

class DeviceGroup(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False, unique=True)
    device_type_id = db.Column(db.ForeignKey('device_type.id', ondelete='SET NULL'), nullable=True)
    device_type = db.relationship("DeviceType", lazy='joined')

class DeviceType(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False, unique=True)

如何只查询DeviceModel.idDeviceType.name 字段?

在纯 sql 中是:

SELECT device_model.id               AS device_model_id,
       device_type_1.name            AS device_type_1_name
FROM device_model
       LEFT OUTER JOIN device_group AS device_group_1 ON device_group_1.id = device_model.group_id
       LEFT OUTER JOIN device_type AS device_type_1 ON device_type_1.id = device_group_1.device_type_id;

【问题讨论】:

    标签: python sqlalchemy flask-sqlalchemy


    【解决方案1】:

    一杯茶创造魔法,我自己回答

    records = db.session.query(DeviceModel.id,DeviceType.name).join(DeviceGroup).join(DeviceType).all()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 2018-03-02
      • 2023-04-05
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多