Django数据库迁移全流程解析:从模型定义到表生成

拾柒
拾柒
发布时间:2026-10-12 | 1人浏览过
原创

本文详解Django框架下的数据库迁移机制。介绍Django的MVT架构与ORM优势,阐述如何在models.py定义模型、配置settings.py及注册admin.py。重点解析makemigrations生成迁移文件与migrate执行迁移创建数据库表的完整流程,并简述SQLite3作为默认数据库的特性。

Django是基于Python语言构建的Web开发框架,其核心特点在于提供了高度封装的功能组件。

作为一个重量级框架,Django内部封装了大量功能模块,从而显著简化了开发流程,使应用构建更加便捷高效。

Django采用MVT(Model-View-Template)架构模式,旨在实现前后端分离及高内聚低耦合的设计目标。其中,M代表Model(模型),其功能等同于MVC中的Model,主要负责与数据库交互及数据处理;V代表View(视图),功能对应MVC中的Controller,负责接收请求、执行业务逻辑并返回响应;T代表Template(模板),功能对应MVC中的View,负责封装和构造最终返回给用户的HTML页面。

对象关系映射(ORM)是Django的核心机制之一,主要实现将Python模型对象与数据库数据之间的自动映射。

实施数据库迁移的第一步,是在文件中定义模型类。

第二步,需在配置文件中,将包含模型类的子应用名称添加到已安装应用的列表中。若遗漏此步骤,ORM将无法识别该应用下的数据库模型。

第三步,需要在文件中将定义好的模型类进行注册,以便在管理后台可见。

完成上述配置后,接下来便是执行数据库迁移的相关命令。

  python manage.py migrate # 根据数据库迁移文件生成对应SQL语句并执行
  # 初次执行时为了先把默认Django需要的数据库创建出来
  python manage.py makemigrations # 创建数据库迁移文件
  # 这次执行是为了创建app中的class模型类的迁移文件
  python manage.py
  # 将新添加的模型类迁移文件生成对应SQL并执行,实际创建出来对应的表

Django项目默认配置的数据库后端为SQLite3。

SQLite3是一款轻量级数据库,资源占用极低,仅需数百KB内存即可运行。它支持Windows、Linux、Unix等主流操作系统,整个数据库存储于磁盘的一个文件中。相较于其他流行数据库,SQLite3在大多数常规操作下速度更快、实现更简单,且API使用轻松。它具有独立性,无需额外依赖,支持多种开发语言,以二进制形式本地存储。当负载量在10万以下时,其性能表现更佳;此外,由于无需远程连接数据库服务器,在某些场景下甚至能进一步提升速度。

补充说明:生成迁移文件与执行迁移是两个关键步骤。

Django框架集成了强大的ORM功能,允许开发者无需编写原始SQL语句即可进行应用开发。

首先需要执行命令生成迁移文件,这一过程“相当于”生成了对应的SQL语句脚本。

python manage.py makemigrations 

执行生成命令后,可以在对应项目的文件夹下观察到新生成的迁移文件。

operations = [

    migrations.CreateModel(

      name='BookInfo',

      fields=[

        ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),

        ('btitle', models.CharField(max_length=20)),

        ('bpub_date', models.DateTimeField()),

      ],

    ),

    migrations.CreateModel(

      name='HeroInfo',

      fields=[

        ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),

        ('hname', models.CharField(max_length=20)),

        ('hgender', models.BooleanField()),

        ('hcontent', models.CharField(max_length=100)),

        ('hBook', models.ForeignKey(to='booktest.BookInfo')),

      ],

    ),

  ]

Django默认会为每一个数据表自动生成一个主键字段。

随后,执行迁移命令。只有执行此步骤,数据库表才会真正被创建。

python manage.py migrat

至此,关于Django中数据库迁移的实现介绍完毕。如需了解更多Django数据库迁移相关内容,建议搜索本站往期文章或继续浏览后续教程,感谢大家的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表