使用Flask-SQLAlchemy进行多对多查询

本尼科尔斯

我有两个表,一个是用户表,另一个是推文表。用户可以关注其他用户,用户可以收藏自己喜欢的推文(多对多关系)。

以下是在我的数据库中创建正确表的类:

follow = db.Table('follow',
    db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('following_id', db.Integer, db.ForeignKey('user.id'))
)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    following = db.relationship('User', 
        secondary = follow, 
        primaryjoin = (follow.c.follower_id == id), 
        secondaryjoin = (follow.c.following_id == id), 
        backref = db.backref('followers'))

favorite = db.Table('favorite',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('tweet_id', db.Integer, db.ForeignKey('tweet.id'))
)

class Tweet(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    favorited = db.relationship('User', secondary=favorite,
        backref=db.backref('favorites'))

现在,我要执行的查询是从给定用户关注的用户中选择所有喜欢的推文。因此,产生了以下效果:

user = User.query.get(user_id)
Tweet.query.filter(Tweet.favorited.in_(user.following))

这不起作用,因为该in_方法不支持模型对象。我很困惑如何在不迭代数组的情况下做到这一点,我认为这根本没有效率。有什么想法吗?在一个查询中完成此操作的加分点...

user_id = ?
qry = (db.session.query(Tweet)
        .join(User, Tweet.favorited)
        .filter(User.followers.any(User.id == user_id))
        )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flask-SQLAlchemy查询多对多

来自分类Dev

使用Flask-SQLAlchemy选择多对多

来自分类Dev

使用sqlalchemy查询使用多列的in子句

来自分类Dev

Flask-SQLAlchemy多对多

来自分类Dev

SQLAlchemy-使用关联表查询多对多

来自分类Dev

Linq使用实体框架进行多对多查询

来自分类Dev

NHibernate-使用连接/联接表进行多对多查询

来自分类Dev

使用python / mysql进行多查询

来自分类Dev

使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

来自分类Dev

Flask-SQLAlchemy查询带有多个必需标签的多对多标签

来自分类Dev

Flask SQLAlchemy多对多删除元素

来自分类Dev

Flask-SQLAlchemy多对多插入

来自分类Dev

我应该使用flask sqlalchemy多对多关系吗?

来自分类Dev

如何使用flask-sqlalchemy多次插入多对多关系?

来自分类Dev

使用LINQ进行多对多数据库查询

来自分类Dev

SQL:在子查询中使用多列进行过滤

来自分类Dev

GAE NDB使用游标对多查询进行排序

来自分类Dev

使用Python + Flask-SqlAlchemy进行查询的默认范围

来自分类Dev

设置多对多sqlalchemy flask app sqlite db的插入顺序

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

进行多对多查询

来自分类Dev

如何在Flask Admin中的“多对多”关系中的模型视图中进行自定义查询?

来自分类Dev

如何在Flask Admin中的“多对多”关系中的“模型视图”中进行自定义查询?

来自分类Dev

sqlalchemy中的多对多查询

来自分类Dev

使用SQLAlchemy ORM以多对一关系基于一个对象过滤查询

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

使用联合查询的多列

Related 相关文章

  1. 1

    Flask-SQLAlchemy查询多对多

  2. 2

    使用Flask-SQLAlchemy选择多对多

  3. 3

    使用sqlalchemy查询使用多列的in子句

  4. 4

    Flask-SQLAlchemy多对多

  5. 5

    SQLAlchemy-使用关联表查询多对多

  6. 6

    Linq使用实体框架进行多对多查询

  7. 7

    NHibernate-使用连接/联接表进行多对多查询

  8. 8

    使用python / mysql进行多查询

  9. 9

    使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

  10. 10

    Flask-SQLAlchemy查询带有多个必需标签的多对多标签

  11. 11

    Flask SQLAlchemy多对多删除元素

  12. 12

    Flask-SQLAlchemy多对多插入

  13. 13

    我应该使用flask sqlalchemy多对多关系吗?

  14. 14

    如何使用flask-sqlalchemy多次插入多对多关系?

  15. 15

    使用LINQ进行多对多数据库查询

  16. 16

    SQL:在子查询中使用多列进行过滤

  17. 17

    GAE NDB使用游标对多查询进行排序

  18. 18

    使用Python + Flask-SqlAlchemy进行查询的默认范围

  19. 19

    设置多对多sqlalchemy flask app sqlite db的插入顺序

  20. 20

    SqlAlchemy(Postgres + Flask):如何求和多列?

  21. 21

    SQLAlchemy + Flask多对一关系

  22. 22

    SqlAlchemy(Postgres + Flask):如何求和多列?

  23. 23

    进行多对多查询

  24. 24

    如何在Flask Admin中的“多对多”关系中的模型视图中进行自定义查询?

  25. 25

    如何在Flask Admin中的“多对多”关系中的“模型视图”中进行自定义查询?

  26. 26

    sqlalchemy中的多对多查询

  27. 27

    使用SQLAlchemy ORM以多对一关系基于一个对象过滤查询

  28. 28

    Jsonify Flask-SQLAlchemy Flask中的多对一关系

  29. 29

    使用联合查询的多列

热门标签

归档