简介:本章主要介绍基于Django模型使用数据库

一、配置数据库信息

以MySQL为例,需要在setting.py文件中找到DATABASES

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 配置为MySQL'NAME': 'xxx',                        # 数据库名'USER': 'xxxx',                       # 数据库登录账户'PASSWORD': 'xxxx',                   # 密码'HOST': '127.0.0.1',                  # 数据库ip地址'PORT': 3306,                         # 数据库端口号'OPTIONS':{"init_command": "set foreign_key_checks = 0;", # 取消外键约束}
}

需要安装mysqlclient,如果mysqlclient使用pip安装失败就去官网下载

mysqlclient · PyPIPython interface to MySQLhttps://pypi.org/project/mysqlclient/#files

二、用Django中的orm操作数据库

orm的作用为在关系型数据库和业务实体对象之间进行映射,orm对底层进行了封装与隔离,在使用Django开发的项目时,无需关心程序使用的是mysql还是Oracle数据库,在操作具体的数据库时,也无需和复杂的SQL语句打交道,只需要使用orm提供的API操作就行。

每个模型都是一个Python类,每个模型都会映射到一个数据库表上

类:数据库中的数据表

属性:数据库中的字段

实例:数据库表中的数据行

1、创建数据库

首先确保mysql服务是启用中的

创建数据库命令:create database  fqq DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2、使用orm创建表

所有Django模型都必须继承自Model类,Model类位于包django.db.models中。在app目录下的models.py文件中导入models

然后执行如下命令

生成迁移文件:python manage.py makemigrations

执行迁移:python manage.py migrate

然后查看数据库里的表

2、使用orm删除、修改表结构

删除很简单,把models.py文件中对应的类注释掉或者删除,重新执行一下上面的命令就可以了

删除列就删除models.py文件中对应的类里面的属性删掉,重新执行命令就可以了

修改也一样,把类里面对应内容替换掉,重新执行命令

3、使用orm给表增加字段

因为原有的表里字段可能有默认值,所以新加的字段选第一个的话就是让你手动添加一个默认值,第二个选项是退出让你在models.py对应的类中的字段赋予一个默认值,这样才能添加成功。

from django.db import models# Create your models here.class UserInfo(models.Model):name = models.CharField(max_length=30)password = models.CharField(max_length=50)age = models.IntegerField()date = models.IntegerField()sex = models.CharField(max_length=10, default='男')email = models.EmailField(max_length=30, default='1234567@qq.com')
#   用下面这种方式也可以,null=True允许数据库中为空,blank=True允许admin后台中为空
#   email = models.EmailField(null=True, blank=True)

后面加上default默认值,就可以了

4、增删改查

Django的manage工具提供了shell命令,帮助我们直接在终端中执行测试Python语句。命令如下:python .\manage.py shell

下载一个ipython,IPthon是基于Python默认CPython解释器之上的一个增强的交互式解释器,提供了颜色显示、tab补全、历史机制、集成Python调试器等功能。

pip install ipython

1)新增数据

使用create新增

使用save()新增

2)更新数据

save()方法:

update()方法:

3)删除数据

删除筛选的数据:

删除所有数据:

如果删除的数据有外键字段,且模型中的on_delete参数被设置为CASCADE,则删除外键关联表中的对应数据。

5、QuerySet对象

QuerySet对象也被称为“查询集”,表示从数据库获取的数据对象集合,查询集有一个最重要的特性--惰性执行。

惰性执行是指,在创建查询集后不会访问数据库,只在调用相关方法时才会访问数据库,这些方法包括遍历迭代、系列化等。

1)all()方法

该方法用于获取模型的QuerySet对象,即获取所有的数据

2)filter()方法

该方法用来过滤数据,和sql语句中的where语句类似,获取满足条件的数据并返回一个QuerySet对象,如果没有获取数据,就返回空的QuerySet对象。

语法:模型类.objects.filter(字段=值)

3)get()方法

该方法用于查询数据表记录,以模型对象的形式返回符合要求的一条数据

如果没有记录或者记录超过1条,会出现错误提示,因此需要做异常捕获处理,filter方法则不会出现错误提示

4)exclude()方法

用于排除符合条件的数据,返回QuerySet对象,语法和filter方法一致,方法中还可以使用大于、小于、模糊匹配等操作符

操作符 含义 具体使用
__gt 大于 filter(age__gt=20)
__gte 大于或等于 filter(age__gte=20)
__it 小于 filter(age__it=20)
__ite 小于或等于
__in 在某列表内 filter(age__in=[10,20]
__contains 模糊匹配 filter(name__contains='王'
__year 日期字段的年份 filter(createdate__year=2022)
__month 日期字段的月份
__day 日期字段的天数

5)values()方法

用于提取需要的字段,返回QuerySet对象,该对象包含的数据类型是由指定的字段和值形成的字典

6)distinct()方法

用于去重,返回一个QuerySet对象

Django框架学习记录(3)相关推荐

  1. Django框架学习(一)Django框架安装和项目创建详解

    Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...

  2. Django框架学习

    Django是现在世界上python语言应用最广泛.发展最成熟的web框架.它足够完整 ,不需要依赖其他就可以开发出 非常完整的web应用.Django的主要内容如下: Django综述:了解Djan ...

  3. Python Web开发——Django框架学习

    文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...

  4. [Django]模型学习记录篇--基础

    模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...

  5. django框架学习文档_Python四大主流网络编程框架,你知道么?

    高并发处理框架-- Tornado Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器.它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大 ...

  6. Django框架学习索引

    索引目录 1.Django介绍与安装 2.Django流程及模式 3.Django基本配置 4.Django模板(Templages) 1.Django的介绍和安装 3.Django框架模式 4.数据 ...

  7. Django 框架学习经验分享

    Django 框架

  8. Django框架学习——1—(虚拟环境搭建、MVC思想与Django的MVT区别、Django项目的创建、运行Django项目、项目结构介绍)

    1.虚拟环境搭建 创建新的Django框架的虚拟环境: 注意:如果没有pipenv指令,需要安装这个支持库,同时需要记住配置它的环境变量,否则虚拟环境会安装在默认文件夹下(一般是C:\Users\Ad ...

  9. Django框架学习---入门-内容复习(2.1)

    定义模型类 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件. 模型类必须继承自Model类,位于包dja ...

最新文章

  1. 【数据库】关系型数据库开发
  2. 【已解决】TypeError: ‘<‘ not supported between instances of ‘str‘ and ‘int‘_Python系列学习笔记
  3. Packet Tracer 5.0 建构 CCNA 实验攻略——路由器实现 Vlan 间通信
  4. 数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
  5. java后端做教育视频网站源码_【Java并发面试点】看这一篇应该是够了
  6. 图算法之——dijkstra算法
  7. Connectivity Matrices(连通矩阵)
  8. 软件测试需要哪些c语言基础知识,测试人员都需要了解哪些redis知识?
  9. C/C++中使用可变参数
  10. (转)Aladdin PK SimCorp Dimension
  11. oracle数据库菜鸟入门
  12. 远控免杀从入门到实践 (11) 终结篇
  13. ArcGIS地图制图教程——超详细
  14. windows挂起进程方法介绍
  15. abaqus三点弯曲有限元模拟
  16. UGC、元宇宙概念、与迷你世界玩法
  17. pip 不使用本地缓存安装指定库
  18. 基于java博网即时通讯软件的设计与实现
  19. ffmpeg截取视频片段命令优化
  20. deform服务器位置,Deform V11 自动多工步分析(MO)设置详解-工艺成型及仿真

热门文章

  1. 泰坦尼克号数据处理与预测
  2. PEEKABOO——冲刺总结
  3. 目标决定人生——没有目标就失去一切!
  4. 技术分享 | binlog 实用解析工具 my2sql
  5. linux的xshell怎么保存密码,Xshell保存账号密码方法
  6. 【Python入门】5-1 条件判断 if、if-else、if-elif-else
  7. NTL库在Win上基于MinGW的安装
  8. 使用frp配置内网访问(穿透)教程(超详细,简单)
  9. 水管工游戏(代码附带注释)2020.10.6
  10. 课程项目:大学程序设计相关大作业汇总参考及源码地址