ORM SQLAlchemy:如何从包含数百个元素的列表/目录构建选择/位置查询
我有两个表格:“用户”是网站用户的列表,“帖子”是所有用户帖子的列表。 任何用户都会追随不同的用户,比如Twitter。 任何“user”对象都拥有一个包含id列表的“following”dict属性。 任何“post”对象都拥有一个包含用户id的“user\u id”标签 我想从“Post”表中获取一个查询,该查询收集“user_id”与dict中包含的id匹配的所有PostORM 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
但这样一个直接翻译的查询将导致一行中有数百个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的列,这使得这一点很难处理。