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是‘对象-关系- ...
随机推荐
- 第一章 T-SQL查询和编程基础 T-SQL语言基础(2)
T-SQL查询和编程基础 (2) 1.3 创建表和定义数据完整性 注意:表是属于架构,而架构又是属于数据库的 -- Create a database called testdb IF DB_ID(' ...
- C# using用法之一(命名空间相关)
通过using关键字可以引入命名空间 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- Linux系统定时备份网站文件到七牛云存储脚本
1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...
- docker之常用命令
1) docker run -p : --name mysql -v d:/docker/mysql/conf:/etc/mysql/conf.d -v d:/docker/mysql/logs:/l ...
- Redhat 7修改主机名
修改主机名: Linux master2 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 G ...
- orcle_day02
第三章:单值函数 函数分为: 1.单值函数 1.字符函数 2.日期函数 3.转换函数 4.数字函数 2.分组函数(后面的章节再做学习) 哑表dual dual是一个虚拟表,用来构成select的语法规 ...
- 依赖注入 php
依赖注入:将当前类依赖的对象,以参数的方式注入到当前类中,简称依赖注入 <?php class Mi { public function size() { return '5.99寸全面屏'; ...
- Freeradius+Cisco2500AC+OpenLdap认证
为了将公司内部认证统一化,启用了802.1x认证,认证流程如下: UserClient->AC控制器->Freeradius->OpenLdap 其中: Freeradius做认证使 ...
- IIS7设置限制IP地址访问
1.拒绝访问设置,选择“一组计算机”,下面重点说明如何填写“网络标识”和“子网掩码”. IP地址按照IPV4的标准来分,分为A类地址.B类地址.C类地址,一般我们是屏蔽C类或者B类地址. A类地址:如 ...
- hive创建分区表
#创建分区表CREATE TABLE if not exists data_center.test_partition (id int,name string,age int)PARTITIONED ...