django模型系统(一)

djangode ORM

ORM:对像关系映射

用python概念去表达数据库

数据库配置(mysql)

  • 安装pumysql
  • 修改项目目录下的__init__.py
import pymysql
pymysql.install_as_MySQLdb()
  • 手动创建一个当前项目的空数据库,准备一个有创建数据库权限的用户

    (推荐使用Navicat,方便;也可用命令行)
  • 在settings配置
    • 找到databases
    • 配置修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm',#数据库名
'USER':'admin',#用户名
'PASSWORD':'Root110qwe',#密码
'HOST':'127.0.0.1',#主机地址
'PORT':'3306'#端口地址
}

补充Navicat的数据库连接

  • 注意:如果虚拟机上的,虚拟机记得写好端口映射

模型的创建与映射

创建

模型就是django.db.modles.Model的一个子类。

  • 关系

模型定义在app文件夹下的models.py文件

例如:

映射

即:激活模型

  • 注册应用app
  • 创建迁移,每一个迁移文件都会有一个迁移编号
    • 每次修改模型都要重新创建
  python manage.py makemigrations appname#不写name就代表迁移所有的注册了的app

例如:



注意:此时数据库无表,此命令仅仅只是告诉Djano,修改了模型,不会操作数据库

如果我们想看,我们的更改,会对数据库产生什么影响,我们可以看执行什么sql语句

使用命令:
python manage.py sqlmigrate appname filenum 例如:
(crm) pyvip@Vip:~/project/crm$ python manage.py sqlmigrate teacher 0001
  • 执行迁移:操作数据库,将对模型的改动应用到数据库(底层就是执行了sql)
  • 命令:
python manage.py migrate appname
  • 模型映射到数据库中是一张表 ,表名 = appname_模型name(小写)

    • 例如上面的student表:teacher_student
  • 执行命令的动作:
    • 在app中查找迁移文件,并且去django_migrations(系统自建的一张表)表中查找,如果有没有执行的迁移文件,就去执行它
    • 执行了迁移生成的sql语句
    • 如果成功,会在django_migrations表中增加一条记录
      • django_migrations表中有记录的信息,系统将不会执行记录中的文件的迁移

简单的数据的增删查改

django调试环境

进入命令(虚拟机的):
python manage.py shell

# 第一种方式
In [3]: s = Student() In [5]: s.name = '心蓝' In [6]: s.age = 18 In [7]: Student.objects.all()
Out[7]: <QuerySet []> In [8]: s.save() # save之后才会写到数据库 # 第二种方式
stu = Student.objects.create(name='敬子明', age=10) # 直接创建

In [12]: stu.delete()
Out[12]: (1, {'teacher.Student': 1})
# 删除多条 In [12]: Student.objects.filter(sex=1).delete()
Out[12]: (1, {'teacher.Student': 1})

# 改一条
In [16]: s.age = 16 In [17]: s.save() # 改多条
In [10]: Student.objects.all().update(sex=0)
Out[10]: 2

# 查所有
In [2]: Student.objects.all()
Out[2]: <QuerySet [<Student: 心蓝>, <Student: 敬子明>]>
# 查一条
In [3]: Student.objects.get(pk=1)
Out[3]: <Student: 心蓝>
# get 返回的是对象 如果返回了多值就会报错
# 带条件
In [8]: res = Student.objects.filter(sex=1) # where sex=1
In [9]: res
Out[9]: <QuerySet [<Student: 心蓝>, <Student: 敬子明>]>

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

  1. django模型系统(二)

    django模型系统(二) 常用查询 每一个django模型类,都有一个默认的管理器,objects QuerySet表示数据库中对象的列表.他可以有0到国歌过滤器.过滤器通过给定参数,缩小查询范围( ...

  2. Django模型系统——ORM校园管理系统代码

    1.models.py from django.db import models # Create your models here. class Class(models.Model): id = ...

  3. 八.django模型系统(二)之常用查询及表关系的实现

    Ⅰ.常用查询  1.几个概念 每一个django模型类,都有一个默认的管理器,objects,查询就是依赖于objects管理器进行的(在创建时就被添加了). QuerySet表示数据库中对象的列表( ...

  4. django模型系统二

    常用查询及表关系的实现 1.常用查询 每一个django模型类,都有一个默认的管理器 objects QuerySet表示数据库中对象的列表,它可以有0到多个过滤器.过滤器通过给定参数,缩小查询范围. ...

  5. Django 模型系统(model)&ORM--进阶

    QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Entry.objects.all()[ ...

  6. 七.django模型系统(一)

    Ⅰ.django的ORM 1.含义 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语 ...

  7. python的Web框架,Django模型系统二,模型属性,及数据库进阶查询

    原始数据接上篇文章来操作.可能需要查看后才能懂.点击这里查看 1.常用的模型字段类型 官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fie ...

  8. Django 模型系统(model)&ORM--基础

    ORM 映射关系: 类 ---> 表 属性 ---> 字段 对象 --->一条数据 创建表(建立模型) 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作 ...

  9. Django模型系统——ORM

    一.概论 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描 ...

随机推荐

  1. HBase指定大量列集合的场景下并发拉取数据时卡住的问题排查

    最近遇到一例,HBase 指定大量列集合的场景下,并发拉取数据,应用卡住不响应的情形.记录一下. 问题背景 退款导出中,为了获取商品规格编码,需要从 HBase 表 T 里拉取对应的数据. T 对商品 ...

  2. 高版本mysql8.0解压版安装步骤

    解压版安装操作官网下载: mysql-installer-community-8.0.12.0.msi如上操作: http://www.cnblogs.com/elfin/p/9429877.html ...

  3. sys模块

    #python run_case.py #在terminal中执行.py文件 在terminal中执行.py文件: 注: 无法使用terminal来打开那个文件 会显示如下:python: can't ...

  4. 配置IPV6地址

    题:在考试系统上设定接口eth0使用下列IPV6地址: system1上的地址应该是2003:ac18::305/64 system2上的地址应该是2003:ac18::30a/64 两个系统必须能与 ...

  5. 设计的一些kubernetes面试题目

    这几个月参与了几场面试,设计了多道面试题,觉得可以综合考察应聘人对kubernetes的掌握情况.在这里分享下,供应聘人自查以及其他面试官参考. 这些面试题的设计初衷并不是考察kubernetes的使 ...

  6. vue 父组件调用子组件内置方法

    背景介绍:外派到泰康做项目.这个项目中有个选择组织的功能,是一个树桩结构的懒加载,于是我就element-ui的tree组件封装了一个公共的组件. 但是后来发现他们的公司组织结构不是都请求的同一个接口 ...

  7. mfc双缓冲绘图

    1.要求 在界面加载本地图片并显示,每过100ms改变一张图片显示 2.现象 通过定时器控制CImage,Load,Draw,Destroy,会非常的卡顿.因为Load图片时,会是非常大的数据[所有C ...

  8. UVA1030 Image Is Everything

    思路 如果两个面看到颜色不同,则这个正方体一定要被删掉 然后依次考虑每个面即可 注意坐标的映射 代码 #include <cstdio> #include <algorithm> ...

  9. Java集合源码分析之ArrayList

    ArrayList简介 从上图可以看到,ArrayList是集合框架中List接口的一个实现类,它继承了AbstractList类,实现了List, RandomAccess, Cloneable, ...

  10. 【python 3】 函数 进阶

    函数进阶 1.函数命名空间和作用域 命名空间一共分为三种: 全局命名空间 局部命名空间 内置命名空间 *内置命名空间中存放了python解释器为我们提供的名字:input , print , str ...