django模型系统一


1.数据库的连接配置

  • django连接mysql的配置流程

    • 安装pymysql       **  pip install pymysql
    • 修改配置
      • 修改setting的配置文件

         DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'crm',
        'USER': 'root',
        'PASSWORD': 'qwe123',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
        }
      • 在setting的同级目录下的__init__.py文件中写上 import pymysql pymysql.install_as_MySQLdb()
    • 设置时区:
      • 设置setting里面的TIME_ZONE = 'Asia/Shanghai'

2.django的ORM系统

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

3.模型的创建与激活

  • 模型的创建

     from django.db import models
    
     # Create your models here.
    
     class Student(models.Model):
    name = models.CharField(max_length=20)
    age = models.SmallIntegerField(default=0)
    sex = models.SmallIntegerField(default=1)
    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()

django模型系统一的更多相关文章

  1. django模型详解(四)

    1 概述 (1)概述 : Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,根据不同的业务需求选择不同的数据库 (2)定义模型 模型,属性,表,字段间的关系 一 ...

  2. Django模型层之单表操作

    Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...

  3. [原创]django+ldap实现统一认证部分二(python-ldap实践)

    前言 接上篇文章 [原创]django+ldap实现统一认证部分一(django-auth-ldap实践) 继续实现我们的统一认证 python-ldap 我在sso项目的backend/lib/co ...

  4. [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...

  5. Django模型层Meta内部类详解

    Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract      这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...

  6. django模型

    用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...

  7. 【Python】django模型models的外键关联使用

    Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...

  8. django模型中的抽象类(abstract)

    首先介绍下django的模型有哪些属性:先看例子: Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模 ...

  9. Django模型之Meta选项详解

    Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.而可用的选项大致包含以下几类 abstract 这个属性是定义当前的模型是不是一个抽象类.所谓抽象类是不会对应数据 ...

随机推荐

  1. 用python写MapReduce函数——以WordCount为例

    尽管Hadoop框架是用java写的,但是Hadoop程序不限于java,可以用python.C++.ruby等.本例子中直接用python写一个MapReduce实例,而不是用Jython把pyth ...

  2. DateHelper

    public static class DateHelp { /// <summary> /// 获取当前日期是该月的第几周 /// </summary> /// <pa ...

  3. _skill,_skill_category

    _skill,_skill_category -- 自定义商业技能-- 小技巧:配合增加自定义商业技能._add skill [ID _skill `skillId`商业技能ID `skillIcon ...

  4. Kotlin 条件控制

    IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句. // 传统用法 var max = a if (a < b) max = b // 使用 else var max: Int ...

  5. 力扣(LeetCode)561. 数组拆分 I

    给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大. 示例 ...

  6. Cordova结合Vue学习Camera

    简单聊两句 学习Vue+Cordova打包编译App,首先你要安装Cordova与vue,在这里本人就不说明了,自行看文档与搜索相关资料. Cordova中文官网地址 Vue中文官网地址 第一步:首先 ...

  7. django中的中间件

    中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责 ...

  8. flask项目部署

    1.安装 安装ssh 新版本安装位 apt/apt-get 老版本为 apt-get 安装以后 ifconfig查看当前的ip地址 如果网络不在同一个ip段 将网络模式设置为桥接 安装pip3 sud ...

  9. vue中父组件给子组件传值,子组件给父组件传值

    1.父组件传给子组件 父元素中 子元素中(通过props传值) 2.子组件传给父组件 子元素中(this.$emit(传过去的名字,传的参数)) 父元素中 通过changeShow的参数data 把修 ...

  10. day059 ajax初识 登录认证练习

    ajax初识 ajax有两个特点: 一个是异步,另一个是浏览器页面局部刷新(这个特点是用户感受不到的时候进行的) 示例: 页面输入两个整数,通过AJAX传输到后端计算结果并返回 在HTML文件中: & ...