sqlalchemy关系和关系查询

sqlalchemy关系和关系查询,sqlalchemy,Sqlalchemy,假设我有3张sqlalchemy表格。以声明方式定义的用户、角色和用户角色。有人会如何建议这样做: user = Users.query.get(1) # get user with id = 1 user_roles = user.roles.query.limit(10).all() 目前,如果我想获得用户角色,我必须查询3个表中的任何一个,并执行连接以获得预期的结果。直接调用user.roles会带来一个我无法筛选或限制的项目列表,因此没有多大帮助。加入东西也不是很有帮助,因为我正在尝试

假设我有3张sqlalchemy表格。以声明方式定义的用户、角色和用户角色。有人会如何建议这样做:

user = Users.query.get(1) # get user with id = 1
user_roles = user.roles.query.limit(10).all()
目前,如果我想获得用户角色,我必须查询3个表中的任何一个,并执行连接以获得预期的结果。直接调用
user.roles
会带来一个我无法筛选或限制的项目列表,因此没有多大帮助。加入东西也不是很有帮助,因为我正在尝试使用以下请求创建rest接口:
localhost/users/1/roles
因此,仅通过该查询,我就需要能够执行
users.query.get(1)、roles.limit(10)等操作
,这些操作确实应该“智能化”我的rest界面,而不需要太多臃肿的代码和if条件,也不需要知道在什么情况下连接哪个表。用户模型已经具有作为关系属性的角色,所以为什么我不能像对普通模型那样简单地查询关系属性?

简单地使用。下面的代码来自与上面链接的文档:

class User(Base):
    __tablename__ = 'user'

    posts = relationship(Post, lazy="dynamic")

jack = session.query(User).get(id)

# filter Jack's blog posts
posts = jack.posts.filter(Post.headline=='this is a post')

# apply array slices
posts = jack.posts[5:20]