gpt4 book ai didi

python - SQLAlchemy Join 从多个表中检索数据

转载 作者:行者123 更新时间:2023-11-29 17:35:11 27 4
gpt4 key购买 nike

我尝试使用 .join() 方法通过 SQLAlchemy 从多个表中检索数据。

当我运行查询时,我希望得到一个对象,其中连接了来自不同表的所有数据,以便我可以使用a.area_name等,其中area_name 位于连接的表之一上。下面是我正在运行的查询和表布局,如果有人能够深入了解如何实现我的目标行为,我将不胜感激!我已经能够使用具有相同语法的 .join() 方法来匹配结果并返回它们,我认为它也会从行中返回额外的数据,因为它连接 表(也许我误解了该方法的工作原理或如何通过查询对象检索信息?)。

如果它有助于排除故障,我将使用 MySQL 作为数据库

查询:

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)

最佳答案

所以看来我需要使用不同的查询方法,并且它返回一个对象元组,然后我需要解析它。

有效的是:

 a = db.session.query(User, UserGroups, Areas
).filter(User.user_id==1
).join(UserGroup,User.usergroup==UserGroup.group_id
).join(Areas, User.area==Areas.area_id
).first()

其余部分保持不变。然后返回一个元组,我可以解析该元组,其中来自 User 的数据是 a[0],来自 UserGroups 的数据是 a[1],而 Areas 是 a[2]。然后我可以使用 a[1].group_name 等访问 group_name 列。

希望这对尝试使用此方法的其他人有所帮助!

关于python - SQLAlchemy Join 从多个表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326052/

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