Django框架学习记录(3)
简介:本章主要介绍基于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)相关推荐
- Django框架学习(一)Django框架安装和项目创建详解
Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...
- Django框架学习
Django是现在世界上python语言应用最广泛.发展最成熟的web框架.它足够完整 ,不需要依赖其他就可以开发出 非常完整的web应用.Django的主要内容如下: Django综述:了解Djan ...
- Python Web开发——Django框架学习
文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...
- [Django]模型学习记录篇--基础
模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...
- django框架学习文档_Python四大主流网络编程框架,你知道么?
高并发处理框架-- Tornado Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器.它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大 ...
- Django框架学习索引
索引目录 1.Django介绍与安装 2.Django流程及模式 3.Django基本配置 4.Django模板(Templages) 1.Django的介绍和安装 3.Django框架模式 4.数据 ...
- Django 框架学习经验分享
Django 框架
- Django框架学习——1—(虚拟环境搭建、MVC思想与Django的MVT区别、Django项目的创建、运行Django项目、项目结构介绍)
1.虚拟环境搭建 创建新的Django框架的虚拟环境: 注意:如果没有pipenv指令,需要安装这个支持库,同时需要记住配置它的环境变量,否则虚拟环境会安装在默认文件夹下(一般是C:\Users\Ad ...
- Django框架学习---入门-内容复习(2.1)
定义模型类 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件. 模型类必须继承自Model类,位于包dja ...
最新文章
- 【数据库】关系型数据库开发
- 【已解决】TypeError: ‘<‘ not supported between instances of ‘str‘ and ‘int‘_Python系列学习笔记
- Packet Tracer 5.0 建构 CCNA 实验攻略——路由器实现 Vlan 间通信
- 数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
- java后端做教育视频网站源码_【Java并发面试点】看这一篇应该是够了
- 图算法之——dijkstra算法
- Connectivity Matrices(连通矩阵)
- 软件测试需要哪些c语言基础知识,测试人员都需要了解哪些redis知识?
- C/C++中使用可变参数
- (转)Aladdin PK SimCorp Dimension
- oracle数据库菜鸟入门
- 远控免杀从入门到实践 (11) 终结篇
- ArcGIS地图制图教程——超详细
- windows挂起进程方法介绍
- abaqus三点弯曲有限元模拟
- UGC、元宇宙概念、与迷你世界玩法
- pip 不使用本地缓存安装指定库
- 基于java博网即时通讯软件的设计与实现
- ffmpeg截取视频片段命令优化
- deform服务器位置,Deform V11 自动多工步分析(MO)设置详解-工艺成型及仿真