我试图获取" DATA"中包含的信息。使用下表:
class Table_1(db.Model):
id = db.Column(db.Integer, primary_key=True)
table_2_id = db.Column(db.Integer, db.ForeignKey('table_2.id'))
table_4_id = db.Column(db.Integer, db.ForeignKey('table_4.id'))
class Table_2(db.Model):
id = db.Column(db.Integer, primary_key=True)
table_3_id = db.Column(db.Integer, db.ForeignKey('table_3.id'))
NAME = db.Column(db.String(60))
table_1 = db.relationship('Table_1', backref='table_1_table_2', lazy=True)
class Table_3(db.Model):
id = db.Column(db.Integer, primary_key=True)
DATA = db.Column(db.String(60))
table_2 = db.relationship('Table_2', backref='table_2_table_3', lazy=True)
我可以获得NAME的价值
Table_1.query.join(Table_2).add_columns(Table_2.NAME).all()
。我怎么能add_column(Table_3.Data)
?
提前致谢!
答案 0 :(得分:0)
首先,感谢IljaEverilä的指导!答案是连续加入我需要的表格。因此,在这种情况下:Table_1.query.join(Table_2).join(Table_3).add_column(Table_3.DATA).all()
可以解决问题。
现在,如果我添加另一个像这样的表:
class Table_4(db.Model):
id = db.Column(db.Integer, primary_key=True)
table_3_id = db.Column(db.Integer, db.ForeignKey('table_3.id'))
SOMETHING = db.Column(db.String(60))
table_1 = db.relationship('Table_1', backref='table_1_table_2', lazy=True)
事情变得复杂起来。但正如IljaEverilä所说,我们可以使用onclause将查询指向正确的方向:
Table_1.query.join(Table_2, Table_1.table_2_id = Table_2.id).join(Table_4,Table_1.table_4_id =Table_4.id).join(Table_3).add_columns(Table_2.NAME,Table_3.DATA,Table_4.SOMETHING).all()