我正在尝试从多个表中检索数据SQL炼金术使用.join()方法。
当我运行查询时,我希望得到一个对象,该对象包含来自不同表的所有数据,以便我可以使用a.区域名称等等在哪里区域名称位于其中一张连接的表上。下面是我正在运行的查询和表布局,如果有人能够深入了解如何实现我的目标行为,我将不胜感激!我已经能够使用.join()使用相同语法来匹配结果并返回它们的方法,我认为它也会从行中返回额外的数据,因为它joins表(也许我误解了该方法的工作原理或如何通过查询对象检索信息?)。
如果对故障排除有帮助,我将使用 MySQL 作为数据库
query:
a = User.query.filter(User.user_id==1).join(UserGroup,
User.usergroup==UserGroup.group_id).join(Areas, User.area==Areas.area_id).first()
和表格:
class User(db.Model):
user_id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20), unique=True)
usergroup = db.Column(db.Integer, db.ForeignKey('user_group.group_id'), nullable=False)
area = db.Column(db.Integer, db.ForeignKey('areas.area_id'), nullable=False)
class UserGroups(db.Model):
id = db.Column(db.Integer, primary_key=True)
group_id = db.Column(db.Integer, nullable=False, unique=True)
group_name = db.Column(db.String(64), nullable=False, unique=True)
class Areas(db.Model):
id = db.Column(db.Integer, primary_key=True)
area_id = db.Column(db.Integer, nullable=False, unique=True)
area_name = db.Column(db.String(64), nullable=False, unique=True)