Django:在migrations文件中执行自定义的SQL和python代码
Django:在 migrations 文件中执行自定义的 SQL 和 Python 代码
在 Django 应用中,migrations 是一系列文件,位于 Django 应用的 migrations 目录下,用以存储 Django 应用中的 model 类的变化。
每次在 Django 应用中对 model 类的修改,都会对应一个 migration 文件。
我们可以在 migrations 文件中执行自定义的SQL和python代码
首先我们需要新建一个文件 0006_auto_20200149_2463.py
基本代码如下:
执行自定义的 SQL 语句,在 migrations 中有 RunSQL 类,由于执行 SQL 语句,
注意:dependencies 列表中对应的是上一次文件的文件名,需要修改。
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2020-01-29 10:42
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ms_test', '0005_auto_20200139_1564'),
]
operations = [
migrations.RunSQL(
sql="insert into ms_test_person (name, price) values ( 'qi', 12.9 );"
)
]
自定义执行 Python 代码,有一个 RunPython
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2020-01-29 10:42
from __future__ import unicode_literals
from django.db import migrations, models
def foo(apps, schema_editor): # 必传的两个参数
"""
写我们需要执行的python代码
:return:
"""
# 获取model类
Person = apps.get_model('ms_test', 'Person')
Person.objects.create(name='li', price=13.88)
class Migration(migrations.Migration):
dependencies = [
('ms_test', '0007_auto_20200445_2453'),
]
operations = [
migrations.RunPython(foo)
]
最后执行python manage.py migrate 就可以执行我们自定义的SQL或python代码
在django中还有一种可执行脚本是django的commands。点击此处查看
posted on 2020-02-29 11:07 herisson_pan 阅读(6) 评论(0) 收藏 举报
浙公网安备 33010602011771号