Python3.8.1 Django3.0.2 使用mysqlclient链接Mysql 已存在的数据库,并生成迁移文件

前提: 已安装好mysqlclient,数据库文件以及存在于MySQL

Python3.8.1  Django3.0.2 

 

1、settings.py文件配置DATABASES

# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名称',			#数据库名称
        'USER': '名字',       		    #名字
        'PASSWORD': '**密码*',                 #密码
        'HOST': 'localhost',		#可以不写,默认的
        'PORT': '3306',				#可以不写,默认的
    }
}

 

2、生成映射文件

①在Terminal中输入

python manage.py inspectdb

查看自动从数据库映射成的models.py中的内容

②在Terminal中输入

python manage.py inspectdb > models.py

导出生成的映射信息并生成models.py文件

③将生成的models.py去替换在**app下的models.py

④将models.py 内容中的

    class Meta:
        managed = False
        db_table = 'your db_table name'

改成:

    class Meta:
        managed = True
        db_table = 'your db_table name'

 managed = False:不可以对数据库进行操作

 managed = True :可以对数据库进行操作

注意:修改的时候请不要选择managed = False全部替换managed = True,否则会报错,下面例举一条:

django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
django_content_type: (models.E028) db_table 'django_content_type' is used by multiple models: contenttypes.ContentType, YSApp.DjangoContentType.

报错的原因是像

Python3.8.1 Django3.0.2 使用mysqlclient链接Mysql 已存在的数据库,并生成迁移文件_第1张图片

这些表都是内置表,因此不可操作,只能要求是managed = False)

 

3、生成迁移文件

①在Terminal中输入

python manage.py makemigrations

这时候我的是在app下生成了一个migrations的文件,改文件夹下生成了一个0001_initial.py的文件

②在Terminal中输入

python manage.py migrate

 

 

 

 

 

 

 

你可能感兴趣的:(Python)