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是‘对象-关系- ...
随机推荐
- spring boot 配置文件动态更新原理 以Nacos为例
配置文件的动态更新 通常获取配置文件的方式 1, @Value 2. @ConfigurationProperties(Prefix) 如果是在运行时要动态更新的话, 第一种方式要在bean上加@Re ...
- [转载]C++二维动态数组memset()函数初始化
来源:https://blog.csdn.net/longhopefor/article/details/20994919 先说说memset函数: void *memset(void *s,int ...
- katalon设置Android SDK路径
本文链接:https://blog.csdn.net/feiniao8651/article/details/82809147文章允许转载,请注明来源:https://blog.csdn.net/fe ...
- sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE6\\xB1\\x89\\xE8\\xAF\\xAD...' for column 'className' at row 1") [SQL: INSERT INTO classmessage (`classId
sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, "Incorrect string value: '\\xE ...
- 第十六篇 JS实现全选操作
JS实现全选 嗨,同学们好,老师这里是专门教同学解决一些针对性的问题,所以说综合起来,就要靠同学自己了. 这节课我们学一个很实用的东西,全选操作!比如淘宝这种商城对吧,我的购物车,我要全选购买,或 ...
- java接口自动化测试小dome
GitHub地址:https://github.com/leonInShanghai/InterfaceAutomation 这个dome 请求 https://www.v2ex.com/api/no ...
- oracle服务端字符集
一.oracle服务端字符集 SQL> select userenv('language') from dual ; USERENV('LANGUAGE')------------------- ...
- php后门简单检测脚本
# coding:utf-8 import os import sys import re rulelist = [ '(\$_(GET|POST|REQUEST)\[.{0,15}\]\(\$_(G ...
- Firefox 的User Agent 将移除 CPU 架构信息
Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的“数字指纹”.Web 浏览器会自动向用户在应用 ...
- 常用数据存储格式之json
常用数据存储格式介绍 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML ...