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是通过使用描 ...
随机推荐
- css3 手风琴
1.看了网上很多关于css的手风琴案例,但是都没有讲到相关的原理. 主要原理1. 利用target属性.2.锚点链接. <!doctype html><html><hea ...
- Maven项目集成Jetty
1.新建webapp maven项目. 项目目录结构如下. 2.pom文件添加jetty构建. <project xmlns="http://maven.apache.org/POM/ ...
- flask 电子邮件Flask-Mail
电子邮件 在web程序中,经常会需要发送电子邮件.比如,在用户注册账户时发送确认邮件:定期向用户发送热门内容或是促销信息等等.在Web程序中发送电子邮件并不复杂,借助扩展Flask-Mail或是第三方 ...
- javascript声明变量
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- nginx运用
1.nginx的 命令 start nginx 这样,nginx 服务就启动了.打开任务管理器,查看 nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少.然后再打开浏览器,输入 h ...
- js中的排序方法
一.冒泡排序 var arr=[22,1,33,19,77]; function bubbleSort(arr){ for(var i=0;i<arr.length-1;i++){ for( ...
- Unity Ragdoll 实现死亡效果 心得+坑点总结
效果展示 正如其名,Ragdoll可以让人物模型实现像布娃娃一样物理效果 创建Ragdoll 在场景中新建 3D Object → Ragdoll... 接下来是一个初见复杂的绑定界面,这里我做了简单 ...
- P2774 方格取数问题(网络流)
P2774 方格取数问题 emm........仔细一看,这不是最大权闭合子图的题吗! 取一个点$(x,y)$,限制条件是同时取$(x,y+1),(x,y-1),(x+1,y),(x-1,y)$,只不 ...
- Django回顾
Django简介 Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. 半成品自定义we ...
- StreamReader 和 StreamWriter 简单调用
/* ######### ############ ############# ## ########### ### ###### ##### ### ####### #### ### ####### ...