ORM SQLAlchemy:如何从包含数百个元素的列表/目录构建选择/位置查询

ORM SQLAlchemy:如何从包含数百个元素的列表/目录构建选择/位置查询,orm,select,dictionary,sqlalchemy,Orm,Select,Dictionary,Sqlalchemy,我有两个表格:“用户”是网站用户的列表,“帖子”是所有用户帖子的列表。 任何用户都会追随不同的用户,比如Twitter。 任何“user”对象都拥有一个包含id列表的“following”dict属性。 任何“post”对象都拥有一个包含用户id的“user\u id”标签 我想从“Post”表中获取一个查询,该查询收集“user_id”与dict中包含的id匹配的所有Post 但这样一个直接翻译的查询将导致一行中有数百个id=1和id=2等的SELECT。有更好的方法吗?不清楚您的下面的dic

我有两个表格:“用户”是网站用户的列表,“帖子”是所有用户帖子的列表。 任何用户都会追随不同的用户,比如Twitter。 任何“user”对象都拥有一个包含id列表的“following”dict属性。 任何“post”对象都拥有一个包含用户id的“user\u id”标签

我想从“Post”表中获取一个查询,该查询收集“user_id”与dict中包含的id匹配的所有Post


但这样一个直接翻译的查询将导致一行中有数百个id=1和id=2等的SELECT。有更好的方法吗?

不清楚您的
下面的
dict属性是如何持久化的。如果它存储在一个单独的N-1表中,则假定您的db模式如下所示:

User(UserID, ...)
Post(PostID, UserID, ...)
Follows(UserID, FollowsUserID, ...)
检索所需数据的SQL查询为:

SELECT  u.UserID,
        p.*
FROM    User u
JOIN    Follows f
    ON  u.UserID = f.UserID
JOIN    Post p
    ON  f.FollowsUserID = p.UserID
假设已配置对象和关系,执行相同作业的SA查询类似于:

u = ... # get desired User object
qry = (session.query(Post).
        join(User). # User will join to Post properly
        join(Follows, Follows.FollowsUserID == User.UserID). # specify the join condition
        filter(Follows.User == u)
      )

当你说“user”对象拥有一个“following”dict属性时,你能解释一下吗?大多数数据库不支持以任何可用形式存储dict的列,这使得这一点很难处理。