• django模型系统一


    django模型系统一


    1.数据库的连接配置

    • django连接mysql的配置流程
      • 安装pymysql       **  pip install pymysql
      • 修改配置
        • 修改setting的配置文件
           1 DATABASES = {
           2     'default': {
           3         'ENGINE': 'django.db.backends.mysql',
           4         'NAME': 'crm',
           5         'USER': 'root',
           6         'PASSWORD': 'qwe123',
           7         'HOST': '127.0.0.1',
           8         'PORT': '3306',
           9     }
          10 }
        • 在setting的同级目录下的__init__.py文件中写上1 import pymysql 2 pymysql.install_as_MySQLdb()
      • 设置时区:
        • 设置setting里面的TIME_ZONE = 'Asia/Shanghai'

    2.django的ORM系统

    • ORM: 对象关系映射(Object Relational Mapping),是一种程序技术,用于实现面相对象编程语言里的不同类型系统的数据之间的转换。用面相对象的方式描述数据库,操作数据库,用不用编写sql语句就能对数据库进行操作。
    • django模型的映射关系:
      • 模型类 → 数据表
      • 类属性 → 表字段名
      • 模型类必须写在app下的models.py中
      • 模型如果需要映射到数据库,所在的app必须被安装
      • 一个数据库对应一个模型类,表中的字段,对应模型的类属性

    3.模型的创建与激活

    • 模型的创建
      1 from django.db import models
      2 
      3 # Create your models here.
      4 
      5 class Student(models.Model):
      6     name = models.CharField(max_length=20)
      7     age = models.SmallIntegerField(default=0)
      8     sex = models.SmallIntegerField(default=1)
      9     ctime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)

      在app目录下的models.py中创建模型类,该类继承models.Model,数据库的字段为该类的属性名。

      • 每一个模型都是django.db.models.Model的子类的
      • 类变量 表示模型中的数据库的字段
      • 每一个字段有一个字段类的实例来表示
    • 模型的激活
      • 在项目中注册app(使用pycharm创建app的会自动配置)
      • 运行数据库迁移命令
        • python manage.py makemigrations <项目名>
          • --告诉django,我们做了哪些的数据库的修改,准备迁移
            • 该命令会在app目录下的migrations目录下生成py文件
          • sqlmigrate: -- 从迁移获取sql语句
      • 运行migrate命令,使迁移生效
        • python manage.py sqlmigrate <app_name>  0001_initial.py(生成的py文件)
        • python manager.py migrate <app_name>    // app_name如果不写则默认应用所有
          • 该命令会在数据库中创建表

    4.数据的增删改查

    • 工具: django shell  调试工具
      • python manager.py shell
        • 配合ipython使用
    • 进入models环境
      • from crm(app_name).models import  Student(创建的类名) 
        • Student.object.all()
          • 返回一个queryset的对象
        • s = Student.object.all()
        • s.query
          • 返回一个django.db.models.sql.query.Query的对象
          • 其__str__方法返回的结果为 select *  from Student   // * 为所有的字段
        • ----------------------------
        • Student.object.get(id=1)
        • Student.object.get(name='ivy')
          • 可通过条件查询,返回类的对象
          • 当get查询到多个值得时候会报错,所以get一般和主键搭配使用
          • 主键可以直接用变量pk代替
        • Student.object.count()
          • 返回总的数量
        • ----------------------------
        • s1 = Student(name='ivy', age=2,)
        • 先实例化一个Student对象
        • s1.save()
          • 保存到数据库里
        • -------------------------------------
        • s2 = Student()
          • 直接实例化对象
        • s2.name = 'bob'
        • s2.age = 10
        • s2.save()
        • -------------------------------------
        • s3 = Student.objects.create(name='summer', age=23)
          • 该方法直接操作数据库
          • 返回一个类的对象
        • -------------------------------------
        • s4 = Student.objects.get_or_create(name='ivy')
          • 该方法会直接操作数据库 
          • 返回一个元祖
          • 第一元素为类的对象
          • 第二个元素为bool值,如果s4已经存在,则bool值为False,如果为创建而来,则是True
        • 直接对对象直接重新赋值
        • update方法
          • Student.objects.filter(name='ivy').update(age=20)
        • delete方法
          • Student.objects.filter(name='ivy').delete()
  • 相关阅读:
    QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
    边缘推流与中心推流对比
    推流协议 支持RTMP协议推流
    改变原型
    window.onbeforeunload 埋点 页面停留时间
    修改/etc/hosts 云服务器 没有做外网转内网的优化
    :nohlsearch
    z waiting to receive.**B0100000023be50
    Powered by Flink
    负载均衡
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10670005.html
Copyright © 2020-2023  润新知