191024DjangoORM之单表操作
一、ORM基础
- ORM:object relation mapping 对象关系映射表
1、配置连接MySQL
- settings.py:将默认配置删除,加入以下配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Djangoorm', #数据库名称
'USER': 'dongfei', #数据库用户名
'PASSWORD': 'dongfei', #数据库密码
'HOST': '192.168.56.101', #数据库主机,留空默认为localhost
'PORT': '3306', #数据库端口
}
}
2、初始化数据库和创建表
- app/models.py
class Book(models.Model): #不写id字段Django会自动给加一个id字段,并且会将此字段设置为主键、自增长
name = models.CharField(max_length=30)
price = models.FloatField()
pub_date = models.DateField()
author = models.CharField(max_length=20,null=False)
- 以下命令在cmd执行
>pip3 install mysqlclient
>python manage.py makemigrations
>python manage.py migrate
二、数据的增删改
1、插入数据
- 方式一
from django.shortcuts import render,HttpResponse
from app.models import *
def addbook(request):
b = Book(name="呐喊",price=38.8,author="鲁迅",pub_date="1923-08-01")
b.save()
return HttpResponse("添加成功")
- 方式二(推荐)
from django.shortcuts import render,HttpResponse
from app.models import *
def addbook(request):
Book.objects.create(name="彷徨",price=58.8,author="鲁迅",pub_date="1926-08-01")
return HttpResponse("添加成功")
2、修改数据
- 方式一(推荐)
def update(request):
Book.objects.filter(name="呐喊").update(price=48.88)
return HttpResponse("修改成功")
- 方式二
def update(request):
b = Book.objects.get(name="彷徨")
b.price = 38.88
b.save()
return HttpResponse("修改成功")
补充:打印SQL语句日志,在settings.py中加入以下代码
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
3、删除数据
def delbook(request):
Book.objects.filter(name="呐喊").delete()
return HttpResponse("删除成功")
三、单表记录的查询
- 单表查询
def select(request):
book_list = Book.objects.filter(id=1) #拿到的是一个集合
book_list = Book.objects.exclude(id=2) #排除id=2的记录,和filter相反
book_list = Book.objects.get(id=1) #拿到的是一个对象
book_list = Book.objects.all()[:3] #取所有的记录,支持列表切片操作
book_list = Book.objects.first() #取第一条记录
book_list = Book.objects.last() #取最后一条记录
book_list = Book.objects.filter(author="余华").values("name","price") #具体取某个字段,返回字典
book_list = Book.objects.filter(author="余华").values_list("name","price") #具体取某个字段,返回元组
book_list = Book.objects.all().values("name").distinct() #去重
book_list = Book.objects.all().order_by("price") #排序
book_list = Book.objects.all().order_by("price").reverse() #反向排序
book_list = Book.objects.all().order_by("price").count() #统计
book_list = Book.objects.filter(price__gt=30).values("name","price") #查询价格大于30的
book_list = Book.objects.filter(name__icontains="小") #查询书名中包含”小“的书籍
return render(request,'index.html',{"book_list": book_list})
- 单表查询的模糊匹配
Book.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
Book.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
Book.objects.filter(id__in=[11, 22, 33]) # not in
Book.objects.filter(name__contains="小") #包含
Book.objects.filter(name__icontains="小") # icontains大小写不敏感
Book.objects.filter(id__range=[1, 2]) # 范围bettwen and
191024DjangoORM之单表操作的更多相关文章
- 学习MySQL之单表操作(二)
##单表操作 ##创建表 CREATE TABLE t_employee( empno ), ename ), job ), MGR ), Hiredate DATE DEFAULT '0000-00 ...
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)
一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...
- Hibernate单表操作
单一主键 assigned:由Java应用程序负责生成(即手工的赋值) native:由底层的数据库自动的生成标示符,如果是MySQL就是auto_increment,如果是Oracle就是seque ...
- Django学习笔记(7)——单表操作和多表操作
单表操作 1,创建模型 创建名为book的APP,在book下的models.py中创建模型: from django.db import models # Create your models he ...
- web框架开发-Django模型层(1)之ORM简介和单表操作
ORM简介 不需要使用pymysql的硬编码方式,在py文件中写sql语句,提供更简便,更上层的接口,数据迁移方便(有转换的引擎,方便迁移到不同的数据库平台)…(很多优点),缺点,因为多了转换环节,效 ...
- Django模型层-单表操作
ORM介绍 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- python 全栈开发,Day71(模型层-单表操作)
昨日内容回顾 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} {% ...
- Django单表操作
一.数据库相关设置 配置ORM的loggers日志: # 配置ORM的loggers日志 LOGGING = { 'version': 1, 'disable_existing_loggers': F ...
- Django之模型层(单表操作)
一.ORM简介 MVC和MTV框架中包含一个重要部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库. ORM是‘对象-关系- ...
随机推荐
- 关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题
今天在公司的项目开发中,遇到一个问题: 后端对象实体类中写入字段顺序与数据库中的存储顺序不一致. 仔细观察到数据库中的表字段的排序方式是按照拼音字母的顺序abcdef......来存储的 而我的实体类 ...
- mysql复习(2)
一.数据定义: SQL数据的定义包括模式的定义.表定义.视图定义和索引的定义. 1.基本的模式定义情况如下表. 2.一个关系数据库管理系统的实例中可以创建多个数据库,一个数据库中可以建立多个模式,一个 ...
- ubuntu终端安装最新ss
有时候因为加密方式比较新,比如aes-256-gcm,导致旧版本的不能用 一句命令安装ss最新版本 aes-256-gcm加密方式可以用,没毛病
- MySQL中导出用户权限设置的脚本
在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限.对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL ...
- SpringCloud 第一篇:服务的注册和发现(Eureka)
一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...
- Vue自行封装常用组件-文本提示
使用方法:1.在父组件中引入"toast.vue" //import toast from "./toast"; 2.在父组件中注册 toast //compo ...
- oracle 数据库启动停止小结
---登录sqlplus sqlplus /nolog conn / as sysdba shutdown immediate --启动数据库有两种方式 startup 会自动完成重启数据库的所有步 ...
- 〇二——body内标签之交互输入标签二
我们在上一章讲了一些要通过后台程序实现交互的标签,下面我们看一看一些不通过后台实现交互的标签. 一.a标签 a标签主要实现超链接的功能 1.跳转效果 这个效果比较简单,直接在属性里添加一个网址,然后可 ...
- Python核心技术与实战——二一|巧用上下文管理器和with语句精简代码
我们在Python中对于with的语句应该是不陌生的,特别是在文件的输入输出操作中,那在具体的使用过程中,是有什么引伸的含义呢?与之密切相关的上下文管理器(context manager)又是什么呢? ...
- iview响应式布局
我想说,我要被逼成前端了. 之前没接触过响应式,这两天和另一位前端程序媛小小的研究了下.做了一个小例子,记录一下,方便以后使用. <template> <div> <Ro ...