【问题标题】:SQL Alchemy: Relationship with grandsonSQLAlchemy:与孙子的关系
【发布时间】:2011-09-22 02:49:26
【问题描述】:

我正在构建一个包含三个不同级别对象的 SQL Alchemy 结构;例如,考虑一个简单的数据库来存储一些博客的信息:有一些Blog 对象,一些Post 对象和一些Comment 对象。每个Post 属于一个Blog,每个Comment 属于一个Post。使用backref,我可以自动获得属于Blog 的所有Posts 的列表,Comments 也是如此。

我起草了skeleton for such a structure

我现在想做的是直接在Blog 中拥有属于Blog 的所有Comments 的数组。我尝试了一些方法,但它们不起作用,甚至让 SQL Alchemy 以我无法修复的方式哭泣。我认为我的需求非常频繁,但我找不到任何有用的东西。

有人建议我怎么做?

谢谢。

【问题讨论】:

  • 从未听说过 SQL 中有这样的关系。您可能必须自己在内部执行循环,或者在博客实现中执行显式连接操作....

标签: python sqlalchemy relationship


【解决方案1】:

我认为你可以使用association proxy

class Blog(Base):

    comments = association_proxy('posts', 'comments')

【讨论】:

  • 我没有尝试,因为我有需要了,但从文档看来,关联代理应该是方法。谢谢。
【解决方案2】:

你需要使用join:

comments = session.query(Comment).join(Post).filter(Post.blog == b1).all()

【讨论】:

  • 谢谢,但我想我正在寻找不同的东西:我想直接将 comments 添加为类博客的字段,以便以与我相同的方式访问它反向引用tasks。换句话说,我不想要执行查询的行,但我想将类的某些字段绑定到每次访问该字段时都会执行的查询(一般来说,relatioship 确实)。我tried to implement this,但有一个我无法理解的错误。比较第 46 行和第 77 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 2012-10-06
  • 2017-10-06
相关资源
最近更新 更多