如何用SQLAlchemy Core获取含关联外键表数据的行值
用SQLAlchemy Core实现关联查询
要同时获取two_table指定行和其关联的one_table数据,直接用JOIN关联两张表即可,具体实现如下:
完整查询代码
# 构建关联查询语句 query = select(two_table, one_table).join( one_table, two_table.c.one == one_table.c.id ).where(two_table.c.id == some_two_table_id) # 执行查询并获取结果 result = db.session.execute(query).first()
关键部分说明
select(two_table, one_table):指定查询两张表的所有字段,若只需特定字段,也可单独列出,比如select(two_table.c.id, one_table.c.name)join():用于关联两张表,第一个参数是目标关联表,第二个参数是关联规则(这里用外键two_table.c.one匹配one_table.c.id)- 保留原有的
where条件,用来过滤two_table的指定行 .first():因为查询的是指定ID的行,只会有一条匹配结果,用该方法直接获取单条数据
结果读取
返回的result是包含两张表字段的行对象,有两种访问数据的方式:
# 通过字段对象访问(推荐,避免字段名混淆) two_name = result[two_table.c.name] one_name = result[one_table.c.name] # 或者按select中表的顺序用索引访问 two_data = result[0] one_data = result[1] print(two_data.id, one_data.name)
内容的提问来源于stack exchange,提问作者Hills
相关产品推荐
相关产品推荐

