以上运算符都区分大小写,在这些运算符前加上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--模型增删改查--备忘的更多相关文章

  1. Django ORM 数据库增删改查

    Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...

  2. LinQ和ADO.Net增删改查 备忘

    是否些倦了 SqlConnection conn=new SqlConnection();一系列繁冗的代码? 来试试Linq吧 查: using System.Data.SqlClient; name ...

  3. Python Django ORM基本增删改查

    工程下的urls.py中增加如下: from cmdb import views as cmdb #要把你要操作的项目import进来 urlpatterns = [ url(r'orm', cmdb ...

  4. 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 ...

  5. Python学习---django之ORM的增删改查180125

    模型常用的字段类型参数 <1> CharField        #字符串字段, 用于较短的字符串.        #CharField 要求必须有一个参数 maxlength, 用于从数 ...

  6. Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)

    摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...

  7. laravel orm进行增删改查

    https://laravelacademy.org/post/9699.html 建议用DB门面直接操作数据库,因为ORM性能低.数据查询上面,ORM不会比DB差的,就比如with,是用了sql最基 ...

  8. ORM基本增删改查

    将上一节建造好的数据库 引入Navicate copy_path找到数据表路径 再用navicat打开 创建好的db不只一张表,其中第一张是我们创建的可以用的表  ,其他都是django自带功能所需表 ...

  9. Django数据库操作(增删改查)

    Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...

随机推荐

  1. linux 禁ping和开启ping方法

    Linux 禁ping和开启ping操作# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all如果要恢复,只要:# echo 0 > /pro ...

  2. leetcode 772.Basic Calculator III

    这道题就可以结合Basic Calculator中的两种做法了,分别是括号运算和四则运算的,则使用stack作为保持的结果,而使用递归来处理括号内的值的. class Solution { publi ...

  3. maven 构建 war文件&&Glassfish运行+部署war文件+访问(命令行模式)

    Glassfish常用命令 asadmin  start-domain  --verbose                 #启动Glassfish服务器(默认domain1) ,并在终端显示相关信 ...

  4. 1100C NN and the Optical Illusion

    推公式,水题.cos()函数是默认弧度制的 #include <iostream> #include <cstring> #include <string> #in ...

  5. 改变radio单选按钮的样式

    <div class="choose_btn"> <input type="radio" name="choose_raido&qu ...

  6. textarea去掉右下三角号

    /*去掉textarea右下角三角符号*/ resize : none; 修改样式直接覆盖就行,会把默认样式覆盖掉.如border,width,height,border-radius

  7. 大整数四则运算------(c++ 实现 乘法没有用傅里叶变换)

    /* 优点: 1 支持负整数的运算 2 良好的输出形式 没有前导零 3 支持cin直接输入 支持cout直接输出 4 支持整数的直接赋值 big_int x=100; 缺点: 1 封装不好 基本都是友 ...

  8. 一台机器上安装两个tomcat

    1.使用压缩版的tomcat不能使用安装版的.  2.第一个tomcat的配置不变.  3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址:增加环境变量CATALINA_BASE ...

  9. 《DSP using MATLAB》Problem 6.10

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  10. oracle数据库丢失数据文件、控制文件、重做日志文件、初始化文件恢复方法

    rman  target/ list backup; 查看是否已备份,如果没有,那就不知道了 模拟故障,删除/u01/app/oracle/oradata/ORCL文件夹下的所有文件 sqlplus ...