Django--ORM--模型增删改查--备忘
以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,
如iexact、icontains、istartswith、iendswith.
insert into tb_bookinfo()values()
新增--save
book = BooksInfo(
bookname = '红楼梦',
bookpubtime = date(1930,9,1),
bookauthor = '曹雪芹'
)
character = CharacterInfo(
charactername = '猪八戒',
charactergender = 1,
characterage = 55,
chac_description = '猪悟能',
cbook = book
)
新增--create
CharacterInfo.objects.create(
charactername = '女儿国国王',
charactergender = 1,
characterage = 20,
chac_description = '女儿美',
cbook = book
)
查询多条记录--返回的是列表
BooksInfo.objects.all()
CharacterInfo.objects.all()
查询记录条数
BooksInfo.objects.count()
CharacterInfo.objects.count()
查询单条记录
book = BooksInfo.objects.get(bookname = '西游记')
BooksInfo.objects.get(id=1)
BooksInfo.objects.filter(id__exact=1)
模糊查询
BooksInfo.objects.filter(bookname__contains='梦')
BooksInfo.objects.filter(bookname__endswith='义')
BooksInfo.objects.filter(bookname__startswith='西')
BooksInfo.objects.filter(bookname__istartswith='西')
空查询
BooksInfo.objects.filter(bookname__isnull = False)
范围查询
BooksInfo.objects.filter(id__in=[1,2,4])
属性与常量之间的比较查询:大于,大于等于,小于,小于等于,exclude
BooksInfo.objects.filter(id__gt=3)
BooksInfo.objects.filter(id__gte=2)
BooksInfo.objects.filter(id__lt=3)
BooksInfo.objects.filter(id__lte=3)
BooksInfo.objects.exclude(id=1)
日期查询
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算
BooksInfo.objects.filter(bookpubtime__year=1930)
BooksInfo.objects.filter(bookpubtime__gt=date(1930,9,1))
属性与属性的比较:F(属性名)
from django.db.models import F
BooksInfo.objects.filter(bookcommentcount__gte=F('bookreadcount'))
BooksInfo.objects.filter(bookcommentcount__gte=F('bookreadcount')*2)
and 查询
BooksInfo.objects.filter(bookauthor__contanins='罗',bookname__startswith='三')
or查询Q(属性名__运算符=值)使用&、|连接,&表示逻辑与,|表示逻辑或,~操作符表示非not
BooksInfo.objects.filter(Q(bookreadcount__gt=300)|Q(bookname__contains='吴'))
BooksInfo.objects.filter(~Q(pk=3))
BooksInfo.objects.filter(~Q(id=3))
聚合查询--返回的是字典
BooksInfo.objects.aggregate(Sum('bookreadcount'))
使用count时一般不使用aggregate()过滤器
BooksInfo.objects.count()
排序
BooksInfo.objects.all().order_by('bookreadcount')
BooksInfo.objects.all().order_by('-bookreadcount')
关联查询语法:一到多,多的模型类名小写
一对应的模型类对象.多对应的模型类名小写_set
b = BooksInfo.objects.get(id=1)
b.characterinfo_set.all()
多到一
c = CharacterInfo.objects.get(id=1)
c.cbook
访问一模型的id:多对应的模型类对象.关联类属性_id
c.cbook_id
关联过滤查询:多的模型类名小写
BooksInfo.objects.filter(characterinfo__charactername='贾宝玉')
BooksInfo.objects.filter(characterinfo__charactername__contains='玉')
BooksInfo.objects.filter(characterinfo__characterage__gt=30)
修改:单条修改
c = CharacterInfo.objects.get(charactername='猪八戒')
c.charactername='猪哥哥'
c.save()
批量修改
CharacterInfo.objects.filter(charactername='林黛玉').update(charactername='林妹妹')
删除:
模型类对象delete
c = CharacterInfo.objects.get(id=3)
c.delete()
模型类.objects.filter().delete()
CharacterInfo.objects.filter.(id=14).delete()
Django查询结果集
BooksInfo.objects.all()
BooksInfo.objects.filter(bookreadcount__gt=30).order_by('bookpubtime')
b = BooksInfo.objects.exclude(bookname__contains='三')
确定查询集中是否有数据
b.exists()
Django--ORM--模型增删改查--备忘的更多相关文章
- Django ORM 数据库增删改查
Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...
- LinQ和ADO.Net增删改查 备忘
是否些倦了 SqlConnection conn=new SqlConnection();一系列繁冗的代码? 来试试Linq吧 查: using System.Data.SqlClient; name ...
- Python Django ORM基本增删改查
工程下的urls.py中增加如下: from cmdb import views as cmdb #要把你要操作的项目import进来 urlpatterns = [ url(r'orm', cmdb ...
- python-django使用ORM模型增删改查CRUD
from weibo.models import WeiboUser as User user_obj = User.objects.get(pk=1) user_obj.pk Out[4]: 1 u ...
- Python学习---django之ORM的增删改查180125
模型常用的字段类型参数 <1> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数 ...
- Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)
摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...
- laravel orm进行增删改查
https://laravelacademy.org/post/9699.html 建议用DB门面直接操作数据库,因为ORM性能低.数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基 ...
- ORM基本增删改查
将上一节建造好的数据库 引入Navicate copy_path找到数据表路径 再用navicat打开 创建好的db不只一张表,其中第一张是我们创建的可以用的表 ,其他都是django自带功能所需表 ...
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
随机推荐
- python sort、sorted高级排序技巧
文章转载自:脚本之家 Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的 ...
- [LeetCode&Python] Problem 530. Minimum Absolute Difference in BST
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- Gym - 101981M:(南京) Mediocre String Problem(回文树+exkmp)
#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using ...
- Gym102040 .Asia Dhaka Regional Contest(寒假自训第9场)
B .Counting Inversion 题意:给定L,R,求这个区间的逆序对数之和.(L,R<1e15) 思路:一看这个范围就知道是数位DP. 只是维护的东西稍微多一点,需要记录后面的各种数 ...
- ZOJ - 4082:Little Sub and his Geometry Problem (双指针)
Little Sub loves math very much, and has just come up with an interesting problem when he is working ...
- 动态开点线段树(陕西师范18k题)---get new skill
思想: 每次开点的时候:左右孩子都开辟新空间 注意懒惰标记tag: 因为会向下传递 提前在值中减去懒惰标记,避免重复计算 链接:https://www.nowcoder.com/acm/ ...
- resNet代码-小象/cv
C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...
- Python学习-终端字体高亮显示1
Python学习-终端字体高亮显示 1.采用原生转义字符序列,对Windows有的版本不支持(比如win7),完美支持Linux 实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显 ...
- fedora的选择
Fedora 首页包含3种版本: 工作站,服务器,ATOMIC 个人只要使用工作站即可,然后,下载界面有另一个选择:Silverblue ========================== Silv ...
- YIT-CTF—隐写术
一:小心心 下载图片——>改后缀名为TXT——>打开发下最后一行有flag 二:双生 下载两张图片——>应为题目说的是双生——>想到可能是两张图片的叠加——>打开图片查看 ...