在此表模式中:
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)
我有一个父母,假设这张桌子:
> 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 |
+--------------------------------------+--------------------------------------+---------+-----------+---------+
父母是名为“ singapore”* 的 国家 对象。可以有多个嵌套的对象,是孩子们 盛港 随便怎么样都 盛港 是孩子
新加坡 。
***
因此,一条等级链可能看起来像a-> b->盛港->新加坡
->意思 是
如何获得所有以父级为新加坡的位置对象,包括父级对象(新加坡)?(请在SQLAlchemy中)。谢谢!
SA文档:Query.cte
我不得不说,新的CTE的东西(因为0.76)是相当不错的,比老办法,我必须返工更好这个。
无论如何,以为您正在寻找这样的东西…
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()
本文向大家介绍SQL Server 公用表表达式(CTE)实现递归的方法,包括了SQL Server 公用表表达式(CTE)实现递归的方法的使用技巧和注意事项,需要的朋友参考一下 公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储
问题内容: 我的数据库看起来像(pligg cms,样本数据) 假设,如何获取芝加哥的顶级parentID,它应该是位置。 我是否在php中编写了递归函数,或者在mysql中可行? 问题答案: 该网站非常好地概述了在mysql和PHP中存储分层数据的不同方法。要回答您的问题,最简单的方法是使用php和递归。您可以使用其他方法,例如,不需要多个数据库查询。但是,在处理大量插入和更新时,此方法的实现可
问题内容: 示例字符串: 我想先进行匹配,然后将其替换为一些文本,以使字符串变为,然后进行匹配。 问题答案: 令人讨厌的是,Javascript没有提供PCRE递归参数,因此要处理嵌套问题远非易事。但是可以做到的。
问题内容: CREATE TABLE foo ( name text NOT NULL, deleted_at timestamp without time zone ); 当我尝试使用ORM执行此操作时,我最终遇到此错误 我想使用ORM,以便在更新命令完成之前使用更改来更新会话。 问题答案: 使用ORM发行多表更新的方法如下: Query API 文档中的脚注,用于指向Core多表更新文档的更新
我只是想递归地定义一个Java8lambda表达式。 我发现使其工作的一种方法是使用一个数组来引用lambda,有效地欺骗了java编译器: 定义递归lambda表达式还有其他技巧吗?
问题内容: 该字符串可以类似于以下之一: 我想匹配不限数量的“ a(x,y)”。如何使用Regex做到这一点?这是我所拥有的: 它仅匹配“ a(x,y)”的两个递归。 问题答案: Java的标准正则表达式库不支持递归,因此您无法将此类通用嵌套结构与之匹配。 但是在确实支持递归的版本(Perl,PCRE,.NET等)中,您可以使用以下表达式: