📜  inspectdb django - Python (1)

📅  最后修改于: 2023-12-03 15:01:24.805000             🧑  作者: Mango

使用inspectdb生成Django模型

当使用Django开发时,我们通常需要与数据库交互。而访问数据库需要有对应的模型。手写模型虽然是一种解决方案,但是对于较大的数据库这非常麻烦。而Django提供了一个工具——inspectdb,可以根据现有数据库生成对应的Django模型。

inspectdb的基本用法

首先,需要基于数据库配置创建Django项目。在这里,我们以MySQL作为样例数据库。

django-admin startproject myproject
cd myproject
python manage.py inspectdb > myapp/models.py

这个命令会根据现有的MySQL数据库生成Django模型,并将模型输出保存为myapp/models.py文件。我们可以为这个文件指定任何其他名称 - 可能会有好几个导出对象,所以导出到文件中非常有用。

以下是从MySQL数据库自动生成的Django模型示例:

from django.db import models

class AuthPermission(models.Model):
    name = models.CharField(unique=True, max_length=255)
    content_type = models.ForeignKey('django_content_type', models.DO_NOTHING, blank=True, null=True)
    codename = models.CharField(max_length=100)
    objects = models.Manager()

    class Meta:
        managed = False
        db_table = 'auth_permission'
        unique_together = (('content_type', 'codename'),)

class AuthGroup(models.Model):
    name = models.CharField(unique=True, max_length=80)
    objects = models.Manager()

    class Meta:
        managed = False
        db_table = 'auth_group'

class AuthUserGroups(models.Model):
    user = models.ForeignKey('AuthUser', models.DO_NOTHING)
    group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
    objects = models.Manager()

    class Meta:
        managed = False
        db_table = 'auth_user_groups'
        unique_together = (('user', 'group'),)
...
结论

通过使用inspectdb,我们可以快速地创建Django模型,而无需手动编写它们。这大大加快了在Django中使用已有数据库的速度。在实际生产环境中使用inspectdb时,需要进行适当的清理,并根据需要进行扩展。