关于Django迁移数据库

Django中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列。 默认是sqlite3数据库,所以我们需要将其修改成mysql数据库。

修改settings.py配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

# 数据库配置 默认的数据库为sqlite
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'django_mysql', # 数据库名
'USER': 'root', # 账号
'PASSWORD': 'root', # 密码
'HOST': '127.0.0.1', # HOST
'POST': 3306, # 端口

}
}

字段名称代码中都添加了相应说明,ENGINE为MYSQL数据库引擎,这个当然不会凭空出现,需要我们去安装 。

需要注意的是,python3.x之后,使用原来python2.7的mysqldb已经不能连接mysql数据库了,要使用pymysql,来完成连接mysql的重任 。

安装pymysql

1
pip install pymysql

项目中配置

在项目包下的__ init __.py中进行如下配置

1
2
3
4
5
6
7
"""
setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.
"""
import pymysql
pymysql.install_as_MySQLdb()

建库

1
2
mysql> create database django_mysql;
Query OK, 1 row affected (0.01 sec)

迁移数据库

1
python manage.py makemigrations

将models文件生成一个迁移文件

1
python manage.py migrate

将迁移文件的内容作用到数据库中,生成表或者修改字段属性

此时数据库的迁移已经完成,也可以运行成功,但是admin使用原密码无法进入。

创建admin

1
python manage.py createsuperuser

输入账号、邮箱(随便)、密码即可。

成功

从上至下依次为网站实际显示、Django admin后台、mysql数据库。

:转载文章请注明出处,谢谢~