Django 本身是不是支持公用表表达式?

Posted

技术标签:

【中文标题】Django 本身是不是支持公用表表达式?【英文标题】:Does Django natively support common table expressions?Django 本身是否支持公用表表达式? 【发布时间】:2013-07-04 03:25:03 【问题描述】:

为了澄清我的问题,我想知道在访问 CTE 功能时是否可以惯用地使用 Django ORM。我想我可以通过编写原始 SQL 语句来使用 CTE,但是使用 ORM“语法糖”绕过手动编码 SQL 语句的能力是 Django 最初的吸引力之一。

【问题讨论】:

【参考方案1】:

Django 不直接支持 CTE,因为它们并非对所有数据库都通用(mysql 不支持它)。有一些包扩展了 Django 的 ORM 的能力以支持 CTE。其中之一是django-cte-trees。请注意,它仅支持 PostgreSQL。

【讨论】:

MySQL 现在支持 CTE,SQLite、Oracle 和 PostgreSQL 也是如此。 Django 都支持。

以上是关于Django 本身是不是支持公用表表达式?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中公用表表达式(CTE)递归的生成帮助数据

T-SQL 公用表表达式(CTE)

公用表表达式,为啥要分号?

公用表表达式:关系不存在

公用表表达式(CTE)

在某些情况下,为什么CTE(公用表表达式)与SQL Server中的临时表相比会减慢查询速度