1、配置mysql
创建数据库
CREATE DATABASE `test` CHARACTER SET 'utf8mb4';
配置用户权限
1 配置MySQL的信息 setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.1.1',
'PORT': 3306,
'USER': 'test',
'PASSWORD': '123456',
'NAME': '123456',
}
}
2、配置django的加载mysql的驱动 在 主项目目录下的 _init_.py
import pymysql
pymysql.install_as_MySQLdb()
3、model.py 创建表名
编辑 表的内容和字段
class Student(models.Model):
#
sex_choies = (
(0, '男'),
(1, '女'),
(2, '保密'),
)
# id = models.AutoField(primary_key=True) 自定义主键
# 默认情况下,django会自动创建id 主键字段 约束也会添加上。
name = models.CharField(max_length=20, unique=True, verbose_name='姓名')
# 文本的varchar , 长度 20 最大32, 唯一 注释
age = models.SmallIntegerField()
# int 数字 ,small 小数字
sex = models.SmallIntegerField(choices=sex_choies)
# 设置限制,从元组中取值,
brithday = models.DateField()
# 生日 年月日
create_time = models.DateTimeField()
classmeta = models.CharField(max_length=20, db_column='class', default='开发班')
math_score = models.SmallIntegerField(default=100)
chinese_score = models.SmallIntegerField(default=100)
# 创建的时间 年月日 时分秒
class Meta:
'''
默认不自定义的话,是以 app应用的名称+类名作为表的名称
做一个元类
自定义表名
'''
managed = True
# 允许 django对数据库的表 进行 创建,修改和删除。
db_table = "db_student"
def __str__(self):
return self.name + " " + str(self.age)
2、声明模型类,迁移数据
orm的映射
类名 映射 表名
类成员 映射 字段
类对象 映射 表中的数据
把models内的 类对象的sql 转换成sql语法,
python.exe .\manage.py makemigrations
python.exe .\manage.py migrate
链接sql,进行创建表,创建字段。
如果在添加字段,设置的字段名称和python的关键字或者和某一些模块名重复了,使用db_column强制转一下
classmeta = models.CharField(max_length=20,db_column='class')
添加的字段要添加默认值 没有默认值的话,创建makemigrations时,会提示,django的安全机制,
classmeta = models.CharField(max_length=20,db_column='class',default='开发班')
python.exe .\manage.py makemigrations
# 精准识别要增删的字段,生成sql语法
python.exe .\manage.py migrate
# 链接数据库进行表和字段的操作
数据的增删改查
1、 插入数据
使用orm 插入数据
def add_student(request):
import datetime,time
bri_th = datetime.date(2011,12,11)
import time
creat_value = time.strftime('%Y-%m-%d %X')
# stu = models.Student(name='张三1', age=18 , sex=1, brithday=bri_th, create_time=creat_value)
# stu.save()
# 方式1 以类对象的形式,赋值成员的属性 和insert的SQL的语法一样
models.Student.objects.create(name='张三4', age=18 , sex=1, brithday=bri_th, create_time=creat_value)
# 方式2 执行 Student类方法objects ,该方法封装了对sql的增删改查的功能,也是常用的插入数据的方式 ,返回值是该条记录的对象本身,可以查询该对象的属性值也就是字段的value
return HttpResponse('创建学生成功')
数据迁移解析
1.设置连接数据的信息,指定驱动pymysql.install_as_MySQLdb(),
在model内设置表类名,创建字段的信息,使用元类自定义,表名,使用managed= True赋权django对数据库的表 进行 创建,修改和删除。
2.迁移数据命令makemigrations,对注册应用下的model内部的类进行精准识别,对sql的转化,migrate 创建sql客户端的链接,执行sql的命令对 表和字段操作。
3、models的类映射了表,类对象代表了表数据,类名实例过的过程就是创建数据的过程。对象的成员属性就是字段, 实例对象的objects方法封装了对sql的增删改查的功能,creat也是常用的插入数据的方式 ,返回值是该条记录的对象本身,可以查询该对象的属性值也就是字段的value