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是通过使用描 ...
随机推荐
- [动态规划]数字三角形(版本I-III)
level 1 1.1题目 1.1.1题目描述 考虑在下面被显示的数字金字塔. 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大.每一步可以走到左下方的点也可以到达右下方的点. 在 ...
- Mysql AVG() 值 返回NULL而非空结果集
[1]select 查询返回一行NULL 先来模拟复现一下遇到的问题. (1)源数据表grades,学生成绩表 (2)查询SQL语句 查询‘080601’班的各门课平均成绩 SELECT sClass ...
- httpd 处理模型
prefork 一个请求用一个进程响应 worker 一个请求用一个线程响应(启动多个进程,多个进程生成多个线程) event 一个进程,处理多个请求
- go语言开发教程之web项目开发实战
Golang介绍Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件 ...
- 手机APP应用外网访问本地WEB应用
手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1 ...
- source insight 4.0.86.0 安装过程中出现的问题
1.sourceinsight_4.0.86.0-setup.exe 2.sourceinsight4.exe覆盖安装目录中的sourceinsight4.exe 3.导入lic文件 过程中360会将 ...
- 原创《开源一个用 vue 写的树层级组件 vue-ztree》
最近由于后台管理项目的需要,页面需要制作一个无限树的需求,我第一感就想到了插件 ztree,不过我觉得它太大了,还是自己动手丰衣足食吧. ztree 的 demo 地址:http://www.tree ...
- C# 为所有 CheckBox 添加事件
C# 为 form 窗体中的所有相同组件循环添加相同事件,这样减少了代码量. private void Form2_Load(object sender, EventArgs e) { foreach ...
- tree与GridView交互
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OgGridView.asp ...
- Python游戏编程入门
<Python游戏编程入门>这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现.并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏pygame游戏库 ...