2011-06-24 50 views
1

我正在用三种不同级别的对象构建SQL炼金术结构;例如,考虑一个简单的数据库来存储有关某些博客的信息:有一些Blog对象,一些Post对象和一些Comment对象。每个Post属于Blog并且每个Comment属于Post。使用backref我可以自动获得属于Blog的所有Post的列表以及Comment的类似列表。我起草了skeleton for such a structureSQL炼金术:与孙子的关系

我现在想要做的是直接在Blog中包含属于该Blog的所有Comment的数组。我尝试了一些方法,但它们不起作用,甚至使SQL Alchemy以我无法修复的方式哭泣。我认为我的经常需要,但我找不到任何有用的东西。

Colud有人建议我该怎么做?

谢谢。

+0

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

回答

2

我想你可以使用一个association proxy

class Blog(Base): 

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

我没有尝试,因为我已经在需求了,但从文档显然应该是关联代理。谢谢。 –

0

您需要使用join

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

谢谢,但我想我正在寻找不同的东西:我想直接添加“comments”作为类Blog的一个字段,以便像我为后端“任务”一样进行访问。换句话说,我不想要执行查询的那一行,但是我想将类的某个字段绑定到每次访问该字段时执行的查询(就像,一般来说,'relatioship'的确如此)。我[试图实现这个](http://pastebin.com/wKmYq77p),但有一个我不明白的错误。比较第46行和第77行。 –