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)

运行结果:

>>> 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章