django模型系统(一)
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模型系统(一)的更多相关文章
- django模型系统(二)
django模型系统(二) 常用查询 每一个django模型类,都有一个默认的管理器,objects QuerySet表示数据库中对象的列表.他可以有0到国歌过滤器.过滤器通过给定参数,缩小查询范围( ...
- Django模型系统——ORM校园管理系统代码
1.models.py from django.db import models # Create your models here. class Class(models.Model): id = ...
- 八.django模型系统(二)之常用查询及表关系的实现
Ⅰ.常用查询 1.几个概念 每一个django模型类,都有一个默认的管理器,objects,查询就是依赖于objects管理器进行的(在创建时就被添加了). QuerySet表示数据库中对象的列表( ...
- django模型系统二
常用查询及表关系的实现 1.常用查询 每一个django模型类,都有一个默认的管理器 objects QuerySet表示数据库中对象的列表,它可以有0到多个过滤器.过滤器通过给定参数,缩小查询范围. ...
- Django 模型系统(model)&ORM--进阶
QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Entry.objects.all()[ ...
- 七.django模型系统(一)
Ⅰ.django的ORM 1.含义 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语 ...
- python的Web框架,Django模型系统二,模型属性,及数据库进阶查询
原始数据接上篇文章来操作.可能需要查看后才能懂.点击这里查看 1.常用的模型字段类型 官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fie ...
- Django 模型系统(model)&ORM--基础
ORM 映射关系: 类 ---> 表 属性 ---> 字段 对象 --->一条数据 创建表(建立模型) 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作 ...
- Django模型系统——ORM
一.概论 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描 ...
随机推荐
- jq+bootstrap响应式系统管理页面
用bootstrap搭建的一个系统管理页面基于经典的HTML+Css 弊端:代码量太大,用vue组件化开发的思想更加便捷且方便!不过如果是做纯展示的系统页面,只需要一些简单的数据交互,用jq配合boo ...
- IO流(二)
二.File类 概述 文件和目录路径名的抽象表示形式 构造方法 public File(String pathname) public File(String parent,String child) ...
- 编程规范(初尝ES6与webpack)
//针对ES6规范(第1-5条)start1.块级作用域let/const取代var:在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量. 2.解构赋值1 ...
- IP通信基础学习第三周(下)
TTL的最值是255. 数据部分不参与检验和的计算. 接收端的结果若为0,则保留:否则,会丢弃该数据报. IP数据报选项字段是可选的,主要用于网络测试和调试. IP辅助协议ICMP的消息类型有错误消息 ...
- sqlserver可将字符转成数字再进行sum,如果varchar类型中存放的都是数字
sqlserver语法: select sum(cast(score as int)) as score from 表名; 注意:int是整型,在实际操作中根据自己需要的类型转换.
- C#基本方法(瞎写写)
public static IEnumerable<T> GetAll<T>() where T : new() { using (var conn = new Profile ...
- JSP页面静态包含和动态包含的区别与联系
---恢复内容开始--- JSP页面静态包含和动态包含的区别与联系: 1.<%@ include file=" " %> 是指令元素,<jsp:include p ...
- 主成分分析 SPSS、python实例分析
今天,在西瓜书上看到了主成分分析法,之前建模有接触过但是理解不够深刻,今天再次和这一位老朋友聊聊. 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通 ...
- Logstash使用介绍
Logstash介绍 Logstash是一个数据收集处理转发系统,是 Java开源项目. 它只做三件事: 数据输入 数据加工(不是必须的):如过滤,改写等 数据输出 下载安装 logstash是基 ...
- 关于html中的 script标签中的 代码写法有效性? easyui tabs的href不能载入内容页面
script标签, 即 html中的 js脚本区域中: 它其实就是一个 普通的 html标签, 在 html 渲染器 parser 看来, 它跟其他任何的普通 的 html标签 , 比如 p 标签, ...