安装MySQL驱动
MySQL驱动不是内置的,可以使用Anaconda安装:
conda install mysqlclient
注册自定的app
这一步和上一篇使用的SQLite数据库一样,就使用上一篇的。
配置要使用的数据库
在同名子目录下的settings.py
中配置要使用的数据库相关信息:
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
# 将数据库从默认的SQLite3改成MySQL
'default': {
# MySQL的数据库驱动
'ENGINE': 'django.db.backends.mysql',
# 使用MySQL数据库
'NAME': 'testDJ',
'USER': 'root',
'PASSWORD': '3838438',
'HOST': 'localhost',
'PORT': '3306',
}
}
编写模型层
这一步和上一篇使用的SQLite数据库一样,就使用上一篇的。
手动创建数据库
前面指明了MySQL数据库名,如果这个数据库不存在,Django无法自动创建,需要先手动创建这个数据库。
生成到数据库
全app生成
如果像之前那样执行:
python manage.py makemigrations
python manage.py migrate
将会在数据库中看到:
因为并没有指明要使用的是哪个app,但是可以看到同名子目录下的settings.py
中已经注册了很多app,其中不乏Django默认自带的一些配置需要使用的app,这其中也有和数据库的交互。
指定app生成
删除掉这个数据库,再重新建立一个空的该数据库。
如果要生成指定app的数据库结构改动文件,和只对指定app的数据库结构来实际操作数据库,可以分别对前面两条语句指明要操作的app名字,例如:
E:\WorkSpace\PyCharm\lzhDjango>python manage.py makemigrations lzhapp
No changes detected in app 'lzhapp'
E:\WorkSpace\PyCharm\lzhDjango>python manage.py migrate lzhapp
Operations to perform:
Apply all migrations: lzhapp
Running migrations:
Applying lzhapp.0001_initial... OK
E:\WorkSpace\PyCharm\lzhDjango>
对数据库的结构操作的临时文件没有修改,是因为对这个app里面的数据库结构没有做过修改,写入文件时自然也不会改动。但只写入部分到数据库时,数据库内的结构是不同的:
除了自定的一个userinfo表之外,还是多了一张表:
这张表里记录的内容应该只是对数据库结构做了真实修改的日志。