Django inspectdb 逆向生成模型及操作已有数据库完整指南

今天早睡
今天早睡
发布时间:2026-10-14 | 3人浏览过
原创

本文详细介绍如何使用 Django 的 inspectdb 命令逆向生成现有数据库的模型代码。涵盖从配置 pymysql 连接、执行 inspectdb 命令生成 models.py,到处理非托管模型(managed=False)及执行迁移的完整流程。通过具体代码示例,帮助开发者快速对接已有数据库并实现数据操作。

inspectdb 使用步骤

第一步,配置项目的 settings 文件。

第二步,在项目的 __init__.py 文件中配置使用 pymysql 连接数据库。


 import pymysql
 pymysql.version_info = (1, 20, 23)
 pymysql.install_as_MySQLdb()

第三步,在终端(terminal)中执行相应的命令。


python manage.py inspectdb > [your app name]\models.py

第四步,执行数据库迁移操作。


python manage.py makemigrations
python manage.py migrate

第五步,将生成的模型代码中 managed = False 修改为 True 或直接删除该属性。其含义是默认情况下 Django 不管理数据库表的生命周期。修改后,即可通过修改 models 来对数据库进行操作。

知识点扩展:Django inspectdb 操作已有表

1. Django 附带了一个名为 inspectdb 的命令行工具,它可以通过扫描现有数据库来创建对应的模型,并将相关模型代码保存到指定文件中。例如,在新建的 newmodels.py 文件中挑选出指定表格对应的模型代码,并将其复制到项目的相应文件中。


python manage.py inspectdb > newmodels.py

若要操作指定的数据库,可以使用如下代码进行配置:


python manage.py inspectdb --database new_schema1 > models1.py

2. 默认情况下,inspectdb 创建的是非托管模型。这意味着在模型的 Meta 类中,managed = False 告诉 Django 不要管理每个表的创建、修改和删除。如果希望 Django 管理表的生命周期,你需要将上述托管选项更改为 True,即将 managed = False 修改为 managed = True。


class Person(models.Model):
   id = models.IntegerField(primary_key=True)
   first_name = models.CharField(max_length=70)
   class Meta:
    managed = False
    db_table = 'CENSUS_PERSONS'

3. 运行 migrate 命令以安装任何额外需要的数据库记录,如 session、auth 等。如果对此类表格没有操作必要,可以不用执行下列代码,亦可进行数据库操作。


 python manage.py makemigrations
 python manage.py migrate

到此这篇关于 django inspectdb 操作已有数据库数据的使用步骤的文章就介绍到这了,更多相关 django 操作已有数据库数据内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

本站声明

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

Python 相关产品和应用

全部下载

专题列表