0
我有一對模型,有一個基本的父母/子女關係。該孩子有一個字段foo
。我想創建一個SQLAlchemy查詢,該查詢將返回具有符合條件的foo子項的所有父對象。與那些父母一起,我想要歸還孩子,但只有當他們符合過濾標準。如何在O(1)查詢中篩選父母和子女?
這是我的模型:
class Parent(Model):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
children = relationship('Child', backref='parent')
class Child(Model):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
foo = Column(String(128))
parent_id = Column(Integer, ForeignKey('parent.id'), nullable=False)
下面是一個例子。可以說我有父母A
和B
。我有孩子a1
,a2
,b1
和b2
。孩子a1
具有foo = 1
,a2.foo = 2
等等。
我要讓像「child.foo == 1」的查詢,並得到這個數據傳回:
[
{
id: 'A',
children: ['a1'],
},
{
id: 'B',
children: ['b1'],
}
]
注意a2
和b2
不包括在結果中。
兩個想法到目前爲止,我已經考慮,但還沒有制定出:
選擇上了孩子,然後建立父對象。
當我這樣做時,我無法查詢父項上的字段,這也是必需的。
選擇父母,然後遍歷匹配父母並進行更多查詢以收集匹配的孩子。
這(出現)需要O(n)查詢,我不想這樣做。
啊哈!這正是我需要的,謝謝! –