django--mysql数据库配置
python==3.7.0
django==2.0
pymysql==0.9.3
一、配置数据库
Django默认数据库为sqlite
若该项目要使用mysql数据库,需要更改配置
1、项目下setting.py中添加如下代码
import pymysql pymysql.install_as_MySQLdb() DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\': \'xxx\', # 数据库库名(需提前创建好数据库) \'USER\': \'xxx\', # 用户名 \'PASSWORD\':\'***\', # 连接密码 \'HOST\':\'xx.xx.xx.xx\', # 主机 \'PORT\':\'3306\', # mysql端口 } } # 将初始DATABASES注释或删除
2、进行数据迁移
进入项目地址(与manage.py同级),执行如下命令
python manage.py makemigrations # 创建 迁移 python manage.py migrate # 执行 迁移
3、执行完毕后,可在mysql指定的数据库中看到已经完成迁移的数据表,至此,mysql数据库配置完成
二、数据表的创建、删除、修改(业务层面)
1、数据表的创建
# 在应用下创建数据表首先需要创建应用,并且注册应用,才可以创表 # 在目标应用下的model.py中写入所需创建的类,如在Usermanagement应用下编写如下代码 from django.db import models # Create your models here. class User(models.Model): id=models.CharField(max_length=50,primary_key=True) user_id=models.CharField(max_length=50) user_name=models.CharField(max_length=50) password=models.CharField(max_length=255) user_mail=models.CharField(max_length=50) user_status=models.IntegerField()
进入项目地址(与manage.py同级),执行如下命令
python manage.py makemigrations # 创建 迁移
# 此时会在应用下的migrations文件夹中生成0001_initial.py文件
python manage.py migrate # 执行 迁移
# 此时会在数据库中创建名为Usermanagement_User的数据表
至此,数据表的创建结束
2、数据表的删除
分两步:①手动进入数据库,删除目标数据表;②在django_migrations表中删除该表的注册信息
至此,该数据表删除成功
3、数据表的修改
# 还是在model.py中修改已经创建好的类 # 添加或者删除或者修改字段 # 完成后执行如下命令 python manage.py makemigrations # 删除、修改字段会直接提示结果
# 添加字段会提示是否加入默认值
此时可以选择1,并且键入默认值\’\’即可
或者在model.py中新增的字段代码中加入默认值,再执行python manage.py makemigrations,代码如下
from django.db import models
# Create your models here.
class User(models.Model):
id=models.CharField(max_length=50,primary_key=True)
user_id=models.CharField(max_length=50)
user_name=models.CharField(max_length=50)
password=models.CharField(max_length=50)
user_status=models.IntegerField()
xx=models.CharField(max_length=255,default=\'\') # 加入default=\'\'
python manage.py migrate # 执行 迁移
# 此时会更新数据库中的表
至此,数据表中字段修改成功
数据表的每次修改都会记录在migrations文件夹下,同时也会存储在django_migrations表里
注:
python manage.py makemigrations python manage.py migrate # 以上代码会执行全局model.py # 若想精确到执行某个app,可修改命令,如下 python manage.py makemigrations app_name python manage.py migrate app_name