⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Django 迁移与物化视图的版本化管理

利用 Django 自定义迁移操作(RunSQL)管理 PostgreSQL 物化视图的创建、刷新和版本回退,完全集成到 makemigrations 流程。 · 难度:入门 · +10XP

Django 迁移与物化视图的版本化管理

ORM 不支持物化视图,但大数据的聚合查询需要。本课程教你创建一个自定义的 Migration 操作类 MaterializedView,它继承 RunSQL,在 apply 时创建或刷新物化视图,并在 unapply 时删除。同时利用 Django 的 django.contrib.postgres 中的 RawSQL 以及 triggers 实现物化视图自动刷新(pg_trigger)。所有变更都被记录在迁移文件中,可版本控制。

from django.db import migrations, models

class MaterializedView(migrations.RunSQL): def __init__(self, view_name, select_sql, index_sql=None): sql = f'CREATE MATERIALIZED VIEW {view_name} AS {select_sql}' reverse_sql = f'DROP MATERIALIZED VIEW IF EXISTS {view_name}' super().__init__(sql, reverse_sql) self.view_name = view_name

class Migration(migrations.Migration): operations = [ MaterializedView('monthly_sales', 'SELECT date_trunc...'), ]

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0