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)    收藏  举报

导航