Django的Postgres声明性函数
项目描述
django-pg-ddl-extras
一个微小的库,实现了Django的Postgres声明性函数定义。
需求
- Python >= 3.7
- Django >= 3.2
使用方法
在下面的示例中,我们创建了一个作为约束触发器部分运行的函数。
from django_pg_ddl_extras import (
    PostgresTriggerFunctionDefinition,
    ConstraintTrigger,
    TriggerEvent,
)
from django.db import models
from django.db.models.constraints import Deferrable
# Write a custom constraint in SQL
# In order to get picked up by the migration engine, we include the function definition
# as part of the class `Meta.constraints` list.
# Unfortunately, Django does not seem to have a cleaner way to define this yet.
custom_function = PostgresTriggerFunctionDefinition(
    name="my_function",
    body="""
DECLARE
BEGIN
    IF (TG_OP = 'DELETE') THEN
        RETURN OLD;
    END IF;
    IF NOT FOUND THEN
        RAISE EXCEPTION
            'This is an example constraint error'
            USING ERRCODE = 23514;
    END IF;
    RETURN NEW;
END;
    """,
)
class MyModel(models.Model):
    class Meta:
        constraints = [
            custom_function,
            ConstraintTrigger(
                name="my_trigger",
                events=[TriggerEvent.UPDATE, TriggerEvent.INSERT, TriggerEvent.DELETE],
                deferrable=Deferrable.DEFERRED,
                function=custom_function.as_func(),
            ),
        ]
          项目详情
    
       关闭
    
      
        
    
    
  
django-pg-ddl-extras-0.1.0.tar.gz的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 7717499cf184fe17bcf894853a813844c7ac3aa9656ad1704f2b7439ed7c89ed | |
| MD5 | ea9086fd83b4ec2cc624e4ce1941b138 | |
| BLAKE2b-256 | 5410bf757adc99e36f18c5c1d41f1ca53309a2162f48e08b3942b78592c93875 |