Django的通用表表达式(CTE)

django-cte的Python项目详细描述


#django的通用表表达式(cte)

[![构建状态](https://travis ci.org/dimagi/django cte.png)(https://travis ci.org/dimagi/django cte)
[![PYPI版本](https://badge.fury.io/py/django-cte.svg)(https://badge.fury.io/py/django-cte)



`` ` `
pip install django-cte
` `

`
` `
` ` `
` ` `/>
` ` `使用
` `//` ` ` `使用“with”构造。自定义的“ctemanager”用于将cte添加到最终查询中。

``py
on_delete=cascade)
amount=integerfield(默认值=0)



cte=with(
order.objects
.values(“region_id”)
.annotate(total=sum(“amount”)


orders=(
cte.join(order,region=cte.col.region_id)
。使用_cte(cte)
。注释(region_total=cte.col.total)
.order_by(“amount”)

`````

此查询返回的订单将具有一个“region_total”属性,该属性包含订单区域中所有订单金额的总和。



表达式

递归CTE查询可以使用“with.recursive”构造。

```py
类区域(模型):
对象=CTemanager()
名称=文本字段(主关键字=真)
父对象=外键(“self”,空值=真,在删除=级联)

def make_regions_cte(CTE):
返回区域.objects.filter(
#从根节点开始
父节点isnull=true
。值(
“name”,
路径=f(“name”),
深度=value(0,输出字段=integerfield(),
)。并集(
递归并集:获取子节点
cte.join(region,parent=cte.col.name)。值(
“name”,
path=concat(
cte.col.path,value(“\x01”),f(“name”),
output_field=textfield(),
depth=cte.col.depth+value(1,output_field=integerfield(),
),
all=true,





region=(
>cte.join(region,name=cte.col.col.col.name)
region=(
>cte.join(region,region,name=cte.col.col.col.name)






















将具有“path”和“depth”`属性。
结果将按“path”排序(按区域名分层)。在本例中,
`path`是一个以根
区域开始的“'\x01'`”分隔的区域名字符串。


有关更高级的示例,请参见[tests](./tests)。




flake8

notests
flake8--config=setup.cfg
`````

`````上传到pypi


package并上传生成的文件。

`````
pip install-r pkg需要.txt

python setup.py sdist bdist`` u wheel
wine upload dist/*
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?