假设父母和孩子有两张桌子(使用SQLAlchemy):
class Child(Base):
__tablename__ = 'Child'
id = Column(Integer, primary_key=True)
is_boy = Column(Boolean, default=False)
parent_id = Column(Integer, ForeignKey('Parent.id'))
class Parent(Base):
__tablename__ = 'Parent'
id = Column(Integer, primary_key=True)
children = relationship("Child", backref="parent")
Run Code Online (Sandbox Code Playgroud)
如何查询房产是否父母是否有孩子?希望在pandas中使用此列但不确定如何有效地查询它.我的直觉是创建一个SQLALchemy混合属性has_a_boy_child,但我不确定如何定义混合属性或匹配表达式.谢谢!
有没有一种好方法可以加快查询 SQLALchemy 中涉及关系的混合属性?我有以下两个表:
class Child(Base):
__tablename__ = 'Child'
id = Column(Integer, primary_key=True)
is_boy = Column(Boolean, default=False)
parent_id = Column(Integer, ForeignKey('Parent.id'))
class Parent(Base):
__tablename__ = 'Parent'
id = Column(Integer, primary_key=True)
children = relationship("Child", backref="parent")
@hybrid_property
def children_count(self):
return self.children_count.count()
@children_count.expression
def children_count(cls):
return (select([func.count(Children.id)]).
where(Children.parent_id == cls.id).
label("children_count")
)
Run Code Online (Sandbox Code Playgroud)
当我跨 50,000 行查询 Parent.children_count 时(每个父级平均大约有 2 个子级),它非常慢。是否有通过索引或其他方式来加速这些查询的好方法?