小编def*_*cal的帖子

如何编写依赖于子关系中的列的混合属性?

假设父母和孩子有两张桌子(使用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,但我不确定如何定义混合属性或匹配表达式.谢谢!

python sql sqlalchemy

5
推荐指数
1
解决办法
1676
查看次数

如何加速 SQLAlchemy 中的混合属性查询?

有没有一种好方法可以加快查询 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 个子级),它非常慢。是否有通过索引或其他方式来加速这些查询的好方法?

python sql postgresql sqlalchemy

2
推荐指数
1
解决办法
780
查看次数

标签 统计

python ×2

sql ×2

sqlalchemy ×2

postgresql ×1