Django数据库表反向生成实例解析

认真发呆
认真发呆
发布时间:2026-10-13| 4人浏览过
原创

本文详细解析Django中数据库表反向生成Model代码的方法。通过对比正向生成与反向生成的区别,演示如何配置Django工程、App及MySQL数据库,并执行manage.py命令从现有数据库表自动生成对应的Python Model代码,帮助开发者高效管理数据库结构。

本文将探讨如何在Django框架中实现从MySQL数据库反向生成Model代码,具体操作步骤如下。

在介绍反向生成之前,我们先简要说明正向生成代码的流程。

正向生成是指先编写model.py文件,随后利用Django内置的工具在MySQL等数据库中创建与Model定义相匹配的数据表。

反向生成则是指先在数据库中执行create table语句创建数据表,再通过Django内置工具自动生成对应的Model代码。

1、准备工作

创建Django工程以及对应的App。

创建一个名为helloworld的Django工程。

django-admin.py startproject helloworld

创建一个名为test的App。

python manage.py startapp hello 

配置数据库连接信息。

在settings.py文件的INSTALLED_APPS列表中添加App名称。

# Application definition 
 
INSTALLED_APPS = [ 
  'django.contrib.admin', 
  'django.contrib.auth', 
  'django.contrib.contenttypes', 
  'django.contrib.sessions', 
  'django.contrib.messages', 
  'django.contrib.staticfiles', 
  'hello', 
]

在settings.py文件中配置数据库连接参数。

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'big_data',
    'USER': 'root',
    'PASSWORD': '1234',
    'HOST': '10.93.84.53',
    'PORT': '3306',
  }
}

2、正向生成

在hello App目录下创建model.py文件。

from django.db import models

class AlarmGroup(models.Model):
  group_name = models.CharField(primary_key=True, max_length=250)
  group_des = models.TextField(blank=True, null=True)
  members = models.TextField(blank=True, null=True)
  timestamp = models.DateTimeField()

执行相关命令以完成正向生成过程。

python manage.py makemigrations
python manage.py migrate

登录配置的数据库,检查确认数据表已成功创建。

3、反向生成

首先在数据库中手动创建数据表。

CREATE TABLE `alarm_group` (
 `group_name` varchar(250) NOT NULL,
 `group_des` blob,
 `members` blob,
 `timestamp` datetime NOT NULL,
 `on_duty` blob,
 `leader` blob,
 PRIMARY KEY (`group_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

接着执行特定命令,生成对应的model.py代码。

python manage.py inspectdb

生成的model.py代码如下所示。

class AlarmGroup(models.Model):
  group_name = models.CharField(primary_key=True, max_length=250)
  group_des = models.TextField(blank=True, null=True)
  members = models.TextField(blank=True, null=True)
  timestamp = models.DateTimeField()

  class Meta:
    managed = False
    db_table = 'alarm_group'

总结

以上内容即为Django数据库表反向生成Model代码的完整解析,希望能为读者提供帮助。感兴趣的朋友可继续查阅本站其他技术专题,如有疏漏欢迎留言指正,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。