在實際開發中 發現 SQLAlchemy
中的一個問題
我想獲得一張完整的連結表的結果
舉個例子:
有 Post
和 Follow
兩個表格
Post
表格有 body
等列
Follow
表格有 follower_id
等列
在連結 Post
和 Follow
的表後,對其查詢
我希望獲得的查詢結果,能包含兩個表格裏的所有列,這樣方便調用
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)