• 基本的创建与查询

    # -*- coding: utf-8 -*-
    
    from django.http import HttpResponse
    
    from TestModel.models import Test
    
    """# 数据库操作--新建数据
    def testdb(request):
    test1 = Test(name='runoob')
    test1.save() #第一种—---—四种方法但并不适用本案例,类名People需要修改
    Person.objects.create(name=name,age=age) #第二种
    p = Person(name="WZ", age=23)
    p.save() #第三种
    p = Person(name="TWZ")
    p.age = 23
    p.save() #第四种
    Person.objects.get_or_create(name="WZT", age=23)
    #这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False.
    return HttpResponse("<p>数据添加成功!</p>") """ """# 数据库操作--获取数据
    def testdb(request):
    # 初始化
    response = ""
    response1 = "" # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Test.objects.all() # filter相当于SQL中的WHERE,可设置条件过滤结果
    response2 = Test.objects.filter(id=1) # 获取单个对象
    response3 = Test.objects.get(id=1) # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
    Test.objects.order_by('name')[0:2] # 数据排序
    Test.objects.order_by("id") # 上面的方法可以连锁使用
    Test.objects.filter(name="runoob").order_by("id") # 输出所有数据
    for var in list:
    response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")""" """#数据库操作--更新数据
    #修改数据可以使用 save() 或 update():
    def testdb(request):
    # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
    test1 = Test.objects.get(id=1)
    test1.name = 'Google'
    test1.save() # 另外一种方式
    # Test.objects.filter(id=1).update(name='Google') # 修改所有的列
    # Test.objects.all().update(name='Google') return HttpResponse("<p>修改成功</p>")""" # 数据库操作--删除数据
    def testdb(request):
    # 删除id=1的数据
    test1 = Test.objects.get(id=1)
    test1.delete() # 另外一种方式
    # Test.objects.filter(id=1).delete() # 删除所有数据
    # Test.objects.all().delete() return HttpResponse("<p>删除成功</p>")
  • 从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet。
  • 文中的例子大部分是基于这个 blog/models.py
  • from django.db import models
    
    class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField() def __str__(self):
    return self.name class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField() def __str__(self):
    return self.name class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    authors = models.ManyToManyField(Author)
    n_comments = models.IntegerField()
    n_pingbacks = models.IntegerField()
    rating = models.IntegerField() def __str__(self):
    return self.headline
  • 1. QuerySet 创建对象的方法

  

python manage.py shell

>>> from blog.models import Blog
>>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
>>> b.save() 总之,一共有四种方法
# 方法 1
Author.objects.create(name="WeizhongTu", email="tuweizhong@163.com") # 方法 2
twz = Author(name="WeizhongTu", email="tuweizhong@163.com")
twz.save() # 方法 3
twz = Author()
twz.name="WeizhongTu"
twz.email="tuweizhong@163.com"
twz.save() # 方法 4,首先尝试获取,不存在就创建,可以防止重复
Author.objects.get_or_create(name="WeizhongTu", email="tuweizhong@163.com")
# 返回值(object, True/False)

备注:前三种方法返回的都是对应的 object,最后一种方法返回的是一个元组,(object, True/False),创建时返回 True, 已经存在时返回 False

自强学堂 学习笔记,侵必删,2020-07-24

Django QuerySet API---数据库接口的更多相关文章

  1. Django QuerySet API文档

    在查询时发生了什么(When QuerySets are evaluated) QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作.只要你查询的时候才真正的操作数据 ...

  2. Django QuerySet API

    https://docs.djangoproject.com/en/2.1/ref/models/querysets/

  3. Django之路:QuerySet API,后台和表单

    一.Django QuerySet API Django模型中我们学习了一些基本的创建和查询.这里专门讲以下数据库接口相关的接口(QuerySet API),当然你也可以选择暂时跳过这节.如果以后用到 ...

  4. python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API

    python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...

  5. [py]django强悍的数据库接口(QuerySet API)-增删改查

    django强悍的数据库接口(QuerySet API) 4种方法插入数据 获取某个对象 filter过滤符合条件的对象 filter过滤排除某条件的对象- 支持链式多重查询 没找到排序的 - 4种方 ...

  6. Django——Django中的QuerySet API 与ORM(对象关系映射)

    首先名词解释. ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型 ...

  7. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  8. Django-models & QuerySet API

    django中配置mysql数据库 1,首先配置settings.py. 一是在INSTALLED_APPS里面加入app名称: 二是配置数据库相关信息 INSTALLED_APPS = [ 'dja ...

  9. 初识Django —Python API接口编程入门

    初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...

  10. Django QuerySet 进阶

    QuerySet 进阶 阅读本文你可以学习到什么 1. 查看 Django queryset 执行的 SQL(1部分) 2. 获得的查询结果直接以类似list方式展示(2,3 部分) 3. 如何在dj ...

随机推荐

  1. Java学习_Java快速入门

    Java简介 安装完JDK后,需要设置一个JAVA_HOME的环境变量,它指向JDK的安装目录.在Windows下,它是安装目录,类似: C:\Program Files\Java\jdk-15 把J ...

  2. feig中调用其他微服务接口无反应

    1.调用微服务时get请求接口中不能使用@RequestBody注解,不然接口调用无反应.post接口中可以使用@RequestBody注解

  3. springboot日志输出到文件

    今天来谈一谈日志,主要是说一说springboot的日志,因为最近在学习springboot.首先在写代码的时候,要养成记日志的习惯,这点真的很重要,因为之前吃了很多亏.过去我对日志很不在意,该有的日 ...

  4. Spring源码深度解析之Spring MVC

    Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块.通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer ...

  5. 任意文件上传——tcp

    package chaoba; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...

  6. 为什么不建议把数据库部署在Docker容器内?

    近2年Docker非常的火热,各位开发者恨不得把所有的应用.软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗?这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视频教程, ...

  7. JavaScript基础知识梳理

    一.简单数据类型 Number.String.Boolean.Undefined.Null 1.Number: 方法: toPrecision( ) 返回指定长度的数字(范围是1到100) toFix ...

  8. JS内存

    内存是用来存什么的 通俗的来说呢,就是用来存 var let function const 声明的变量. 内存的大小 与操作系统有关,64位1.4G 32位0.7G. 为啥内存大小要这么设计,为啥不是 ...

  9. 【项目实践】SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    以项目驱动学习,以实践检验真知 前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个 ...

  10. 在.NET Core中使用Channel(三)

    到目前为止,我们一直在使用所谓的"Unbounded"通道.你会注意到,当我们创建通道时,我们这样做: var myChannel = Channel.CreateUnbounde ...