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

在实际开发中 发现 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)

运行结果:

扫描二维码关注公众号,回复: 9968695 查看本文章
>>> data[0].body
Traceback (most recent call last):
File "<console>", line 1, 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)
发布了356 篇原创文章 · 获赞 315 · 访问量 124万+

猜你喜欢

转载自blog.csdn.net/yilovexing/article/details/104708198