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. 《Java语言实现快速幂取模》

    快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程 ...

  2. variable 'o' used without having been completely initialized Compiling Vertex program

    variable 'o' used without having been completely initialized Compiling Vertex program   v2f vert (ap ...

  3. 《Visual C#从入门到精通》第四章使用复合赋值和循环语句——读书笔记

    第1章 使用复合赋值和循环语句 4.1 使用复合赋值操作符 任何算术操作符都可以像这样与赋值操作符合并,从而获得复合赋值操作符. 不要这样写 要这样写 Variable=Variable*number ...

  4. loadrunner中web_reg_save_param和web_reg_save_param_ex的区别

    在使用Loadrunner进行性能测试,编写接口请求脚本时,通过会用到关联函数,而web_reg_save_param和web_reg_save_param_ex的函数有什么区别呢?以下为总结的两点, ...

  5. spark streaming将处理结果存入mysql中(使用c3p0连接池)

    1.c3p0相应的架包导入工程中 将以下四个架包导入工程, 主要有三个架包:c3p0-0.9.5.2.jar c3p0-oracle-thin-extras-0.9.5.2.jar mchange-c ...

  6. php搜索附近人及显示男生女生分开

    // 滚动切换标签样式 switchTab: function (e) { this.setData({ currentTab: e.detail.current }); this.checkCor( ...

  7. Centos 7 搭建DNS笔记

    bindind的程序包 bind-libs:被bind和bind-utils包中的程序共同用到的库文件: bind-utils:bind客户端程序集:提供了,dig , host, nslookup等 ...

  8. 如何seo(搜索引擎优化)

    Seo是指遵循搜索引擎的搜索原则,对网站结构.网页文字语言和站点间互动外交等进行合理规划部署,以改善网站在搜索引擎的搜索表现,从而增加客户发现并访问网站的可能性的一个过程.

  9. js实现下拉框模糊查询

    keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : s ...

  10. vim 插件 -- ctags

    vim ctags 插件实现代码跳转的功能.希望在一个项目中快速的找到函数,变量,宏等定义的地方. 下载 http://ctags.sourceforge.net/ 安装 tar -jxvf ctag ...