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是‘对象-关系- ...
随机推荐
- Maven将java打包成jar并且运行笔记
Maven项目打包成jar并且运行笔记 首先创建一个maven项目 运行成功后,有两种方式将项目进行打包. 第一种方式: 在IDEA编辑器中maven项目进行打包: 这里显示jar包中没有主清单属性, ...
- js中new到底做了什么?如何重写new?
new 构造函数()执行顺序1.在堆中开辟对象内存空间, 记为obj2.在obj 中添加__proto__属性并指向 构造函数.prototype3.将构造函数中的this 指向obj4.执行构造函数 ...
- MySQL 下载与安装
从MySQL官网下载安装文件,我的电脑是window10 64位的,下载社区版本,选择mysql community server,再下载64位的. 官网链接:https://www.mysql.co ...
- python tkinter 基本使用
这里只放表格和一个控件基本属性 grid(**options) 属性-- 下方表格详细列举了各个选项的具体含义和用法: 选项 含义column 1. 指定组件插入的列(0 表示第 1 列)2. 默认值 ...
- 13、yum
1.yum yum是管理rpm包的工具 2.yum源(yum仓库) 要使用yum前,需要准备一个yum源(我们也称为yum仓库), 这个可以是一个互联网上的仓库,也可以是本地自己搭建的仓库. 仓库里面 ...
- Python基础编程:字符编码、数据类型、列表
目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...
- PAT Basic 1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1. 输出格式: 在一行内输出 n 的 ...
- 第三方库-时间函数dateutil
在dateutil中,吸引我的东西有2个,1个是parser,1个是rrule. 其中parser是根据字符串解析成datetime,而rrule是则是根据定义的规则来生成datetime. 安装没必 ...
- Python核心技术与实战——二一|巧用上下文管理器和with语句精简代码
我们在Python中对于with的语句应该是不陌生的,特别是在文件的输入输出操作中,那在具体的使用过程中,是有什么引伸的含义呢?与之密切相关的上下文管理器(context manager)又是什么呢? ...
- JS转为number的四种方法
// 1.Number() var num1 = Number(true); console.log(num1); var num2 = Number(" ") console.l ...