首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQLAlchemy中执行这个递归的公共表表达式?

如何在SQLAlchemy中执行这个递归的公共表表达式?
EN

Stack Overflow用户
提问于 2012-08-16 19:25:24
回答 1查看 3.3K关注 0票数 4

在此表模式中:

代码语言:javascript
运行
复制
class Location(db.Model):
    id = db.Column(db.String(255), primary_key=True)
    parent_id = db.Column(db.String(255), db.ForeignKey('location.id'), nullable=True) 
    type = db.Column(db.String(255))
    name = db.Column(db.String(255))
    options = db.Column(db.Text, nullable=True)

我有个家长,假设这张桌子:

代码语言:javascript
运行
复制
> select * from location;
+--------------------------------------+--------------------------------------+---------+-----------+---------+
| id                                   | parent_id                            | type    | name      | options |
+--------------------------------------+--------------------------------------+---------+-----------+---------+
| 8821da60-e7d2-11e1-951e-ae16bc2b7368 | 88227a60-e7d2-11e1-951e-ae16bc2b7368 | city    | sengkang  | NULL    |
| 88227a60-e7d2-11e1-951e-ae16bc2b7368 | NULL                                 | country | singapore | NULL    |
+--------------------------------------+--------------------------------------+---------+-----------+---------+

父对象是country对象,名为新加坡。可以有更多嵌套对象,它们是增康的子对象,就像增康新加坡的子对象一样。

因此,一个单一的等级链可能看起来像一个-> b ->生康->新加坡。

因此,->意味着

如何获得具有父对象为新加坡的所有位置对象,包括父对象(新加坡)?(请用SQLAlchemy )。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-17 00:16:37

SA文档:Query.cte

我不得不说,新的CTE (从0.76开始)是相当好的,比我必须返工的旧方式好。

总之,你觉得你在找这样的东西.

代码语言:javascript
运行
复制
included_parts = session.query(Location).\
  filter(Location.name=='singapore').\
  cte(name='included_parts', recursive=True)

incl_alias = aliased(included_parts, name="pr")
parts_alias = aliased(Location, name='p')
included_parts = included_parts.union_all(
  session.query(parts_alias).filter(parts_alias.parent_id==incl_alias.c.id)
)

q = session.query(included_parts).all()
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11994092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档