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