settings配置:

若想将模型转为mysql数据库中的表,需要在settings中配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'english',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,

 #   一般情况就上面的就行了
        'ATOMIC_REQUEST': True,    #声名 原子性 操作(全部成功则成功,其一失败全失败)
        'OPTIONS': {
            "init_command": "SET storage_engine=MyISAM",
        }
    }
}

'''
'NAME':要连接的数据库,连接前需要创建好
'USER':连接数据库的用户名
'PASSWORD':连接数据库的密码
'HOST':连接主机,默认本机
'PORT':端口 默认3306

'ATOMIC_REQUEST': True,
设置为True统一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。
是全局性的配置, 如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器 
'OPTIONS': {
             "init_command": "SET storage_engine=MyISAM",
            }
设置创建表的存储引擎为MyISAM,INNODB
'''

注意1:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建 USER和PASSWORD分别是数据库的用户名和密码。设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的__init__,在里面写入:

import pymysql
pymysql.install_as_MySQLdb()

最后通过两条数据库迁移命令即可在指定的数据库中创建表 :

1、python manage.py makemigrations   #可能遇到一些问题见 : 迁移数据库出现的问题
2、python manage.py migrate

或者:
1、python manage.py makemigrations [app name]
2、python manage.py migrate

注意:确保配置文件中的INSTALLED_APPS中写入我们创建的app名称

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    "app01"   #------在这里
]

注意:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

增加,删除字段

删除,直接注释掉字段,执行数据库迁移命令即可

新增字段,在类里直接新增字段,直接执行数据库迁移命令会提示输入默认值,此时需要设置

publish = models.CharField(max_length=12,default='人民出版社',null=True)

注意:

  1 数据库迁移记录都在 app01下的migrations里

  2 使用showmigrations命令可以查看没有执行migrate的文件

  3  makemigrations是生成一个文件,migrate是将更改提交到数据量

 

迁移数据库出现的问题

排除基本依赖造成的报错:

  1、 user 表必须 使用 UserInfo  这个名字

  2、如果使用admin : settings 中 AUTH_USER_MODEL 这个字段 必须指定 UserInfo 这个用户表 

  3、models 中的表字段名 最好不要两个表是一样的名字,如果有,那就加上   " 别名 " ( related_name 这个字段)

  4、使用 CharFeild 这个字段 必须指定 " 最大长度 " ( max_length 这个字段)

 

问题一:如果报错如下:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MySQLclient目前只支持到python3.4,因此如果使用的更高版本的python,需要修改如下:

通过查找路径F:\Python3.6\Lib\site-packages\django\db\backends\mysql\base.py  主要是在python安装目录中
这个路径里的文件把

if version < (1, 3, 3):
     raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)    #注释掉即可

问题二:

"Table 'blog.django_admin_log' doesn't exist"

一般情况是是因为执行迁移命令 导致:
1、python manage.py makemigrations [app name]
2、python manage.py migrate [app name]

多半是因为 执行表 迁移的 时候少创建了几张表! 解决如下:

把二条命令更换成: python manage.py migrate