Django项目默认 sqlite3 数据库, 生成的数据库名为 db.sqlite3 。sqlite3 仅供测试使用,可以通过配置修改为使用 mysql。
一、配置使用MySQL数据库
1、手动创建mysql数据库,例如db_Django03
create database db_django03 charset=utf8;
create database db_django03 charset=utf8;
2、在与项目同名的setting.py文件中,配置mysql
DATABASES = {
# Django默认配置使用sqlite3数据库
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# 配置使用mysql
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库产品
'NAME': 'db_Django03', # 数据库名
'HOST': 'localhost', # 主机地址,本机使用localhost,生产环境为实际主机ip
'PORT': '3306', # 端口
'USER': 'root', # 用户名
'PASSWORD': 'mysql', # 密码
}
}
DATABASES = {
# Django默认配置使用sqlite3数据库
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# 配置使用mysql
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库产品
'NAME': 'db_Django03', # 数据库名
'HOST': 'localhost', # 主机地址,本机使用localhost,生产环境为实际主机ip
'PORT': '3306', # 端口
'USER': 'root', # 用户名
'PASSWORD': 'mysql', # 密码
}
}
3、在python虚拟环境下安装 MySQL 驱动
pip install pymysql
pip install pymysql
4、在与项目同名的包下的 init.py 文件中,初始化MySQL驱动
# 初始化mysql驱动
import pymysql
pymysql.install_as_MySQLdb()
# 初始化mysql驱动
import pymysql
pymysql.install_as_MySQLdb()
二、迁移命令生成表
在配置完mysql的配置项后,需要进入到项目的根目录,在终端上执行两个命令,生成数据库表
1、生成迁移文件
python manage.py makemigrations
python manage.py makemigrations
2、生成数据库表
python manage.py migrate
python manage.py migrate
3、查看数据库表
此时的mysql中只有django默认生成的表,还没有自己定义的表,当定义了模型类后,需要执行两个迁移命令,才能生成表
只要模型类涉及到结构改变,也是需要重新执行两个迁移命令
注意:
1、确保Mysql用户表里为空的,如果之前有迁移过数据到Mysql,有可能会出错。注意出错的时候所报的错误信息。如果提示有重复主键,那需要先删掉数据。这些数据是在给MySQL数据库应用迁移文件的时候产生的,一般是content_type相关的表。
2、如果在完成后运行项目报错:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MySQLdb’
django首次迁移数据库报错:
安装mysqldb出错:
easy_install mysql-python 报错:
原因大概是python3与2的关系,网上很多处理方法是基于python2的:
处理方法:
pip install mysqlclient
sudo apt-get install python3-dev libmysqlclient-dev
pip install mysqlclient
sudo apt-get install python3-dev libmysqlclient-dev
再次运行迁移命令:
python manage.py makemigrations
python manage.py makemigrations