gpt4 book ai didi

python - 在 Flask-SqlAlchemy 中连接表

转载 作者:行者123 更新时间:2023-11-28 21:07:02 26 4
gpt4 key购买 nike

假设我有几个表,想进行连接查询:

schedule_calendars = ScheduleCalendar.query\
.join(Schedule)\
.join(ClinicBranchHasDoctor)\
.filter_by(clinic_branch_id=clinic_id, doctor_has_specialty_id=doctor_speciality_id).all()

这里的问题是我的结果将只包含 ScheduleCalendar 类的属性。我该如何查询才能使我的结果包含所有联接表的属性。

时间表:

    id = Column(db.Integer, primary_key=True)
added_date = Column(db.DateTime(timezone=True), default=get_current_time, nullable=False)
start_date = Column(db.Date, nullable=False)
name = Column(db.String(128), nullable=False)
is_valid = Column(db.Boolean, default=IS_VALID, nullable=False)
slot_size = Column(db.Integer, default=30)

日程表:

  schedule_id = Column(db.Integer, db.ForeignKey("schedules.id"), nullable=False)

ClientBranchHasDoctor:

schedule_id = Column(db.Integer, db.ForeignKey("schedules.id"), nullable=False)

我在这里跳过了一些属性。我认为最重要的是我的表有适当的约束,否则连接将失败。

最佳答案

您需要为您的类添加反向引用。

例如,在您的 ScheduleCalendar 类中,添加:

schedule_id = Column(db.Integer, db.ForeignKey("schedules.id"), nullable=False)
schedule = db.relationship("Schedule", back_populates="calendar", lazy="dynamic")

然后在您的 Schedule 类中添加:

calendar = db.relationship("ScheduleCalendar", back_populates="schedule")

现在您可以从 ScheduleCalendar 访问 Schedule 对象。

在您的示例中,您将像这样访问它:

schedule_calendars = ScheduleCalendar.query\
.join(Schedule)\
.join(ClinicBranchHasDoctor)\
.filter_by(clinic_branch_id=clinic_id, doctor_has_specialty_id=doctor_speciality_id).all()

schedule_calendars[0].schedule

关于python - 在 Flask-SqlAlchemy 中连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com