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