007 djangoORM-初始

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

posted @ 2023-03-24 22:49  mmszxc  阅读(18)  评论(0)    收藏  举报