Django ORM 用已存在数据库反向生成modles.py

1,806 阅读1分钟

需求分析

有这样一种情况, 你的数据库和表结构早就建好了, 可能数据都有了, 这时候需要用Django 的ORM模型来管理操作表和数据, 这个时候ORM映射该怎么做呢?

好在django为我们提供了 manage.py inspectdb 这个辅助工具, 专门用来阅读你的数据库来反向生成ORM映射类, 你只需要在settings.py 文件中配置好数据库之后就可以反向生成了

注意: 此方法只适用 Mysql , 其他数据库未验证

第一步

配置数据库:

DATABASE = {
    'default':{
        'ENGINE':'django.db.backends.mysql',
        'NAME':'数据库名',
        'HOST':'数据库地址',
        'PORT':端口,
        'USER':'用户名',
        'PASSWORD':'密码',
    }
}

第二步

反向生成

python manage.py inspectdb
# 操作时候会在控制台输入 反向生成的models代码
python manage.py inspectdb > models.py
# 将反向生成的models代码 导出到 models.py 这个文件中

操作之后会在manage.py 同目录下生成一个models.py 文件, 你可以用生成的models.py 去替代自己app中的models.py

注意

这里生成的是一个不可修改/删除的models, 如果要用ORM 执行修改或删除操作, 还需要做以下操作:

class Meta:
    managed = False
    db_table = 'black_list'
    #  将Meta 类中的managed 的值改为True

#修改后的如下
class Meta:
    managed = True
    db_table = 'black_list'

修改后执行 python manage.py migrate 同步数据后就大功告成啦

                                ~ Over 人生苦短,我用Python MM~