加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SQLAlchemy 两张表联表查询后获取两张表所有的字段

发布时间:2021-05-21 04:52:57 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:在实际开发中 发现 sqlAlchemy 中的一个问题 我想获得一张完整的连结表的结果 举个例子: 有 Post 和 Follow 两个表格 Post 表格有 body 等列 Follow 表格有 follower_id 等列 在连结 Post 和 Follow 的表后,对其查询 我希望获得的查询结果,能包含两个表格

在实际开发中 发现 sqlAlchemy 中的一个问题

我想获得一张完整的连结表的结果

举个例子:

PostFollow 两个表格

Post 表格有 body 等列

Follow 表格有 follower_id 等列

在连结 PostFollow 的表后,对其查询

我希望获得的查询结果,能包含两个表格里的所有列,这样方便调用

data = Post.query.join(Follow,Follow.followed_id == Post.author_id).filter(Follow.follower_id == 2)

运行结果:

>>> data[0].body
'test body4'

>>>data[0].follower_id
Traceback (most recent call last):
File "<console>",line 1,in <module>
AttributeError: 'Post' object has no attribute 'follower'

从上面看到查询结果是个 Post 对象,其不含 follower 列的信息

data = Follow.query.join(Post,Follow.followed_id == Post.author_id).filter(Follow.follower_id == 2)

运行结果:

>>> data[0].body
Traceback (most recent call last):
File "<console>",in <module>
AttributeError: 'Follow' object has no attribute 'body'

>>> data[0].follower_id
2

同理,这次的 Follow 对象不含 body 列的信息

解决方案:

jijia2 模板中看到可以通过 .add_entity() 这种方式来访问,就想到是否在这里也是可以的,结果是可以的

data = Post.query.join(Follow,Follow.followed_id == Post.author_id)).add_entity(Follow).filter(Follow.follower_id == 2)

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读