zoukankan      html  css  js  c++  java
  • Django笔记&教程 5-1 基础增删查改

    Django 自学笔记兼学习教程第5章第1节——基础增删查改
    点击查看教程总目录

    第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表。
    这一章将介绍如何使用模型对数据库表进行增删查改,

    注意:修改了模型类models.Model后一定要更新数据库(详见第四章第一节第三部分),如果数据库表进行增删查改则不必。

    0 - 超实用工具介绍——Django下的交互式命令行

    Django项目中,如果在项目实际使用的代码中,通过增删查改实现对应的业务逻辑,
    测试起来会比较麻烦,(往往需要运行项目,按照一定的业务逻辑去重复性的手动测试),这种情况下,使用代码进行测试是一种更好的选择。

    所以我们需要一个场景,可以直接运行代码,以方便我们测试业务代码逻辑本身是否正确。
    这个时候,python的交互式命令行,就是一个十分有用的工具了,
    但是导入项目本身依赖的配置和文件则有点麻烦,而Django本身则提供了一个方法解决这个问题。
    在项目所在文件夹下打开命令行窗口,运行

    python manage.py shell
    

    即可开启导入了项目设置的命令行窗口,这时要使用项目中的某一代码文件中的代码,则像项目中编写代码那样正常导入即可。

    示例效果如下

    F:my_projectsdemo2>python manage.py shell
    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from myapp import models
    >>>
    

    1 - 增(Create)——添加数据

    myapp/models.py如下:

    from django.db import models
    
    class Person(models.Model):
        gender = (
            ('male', '男'),
            ('female', '女'),
        )
    
        name = models.CharField(max_length=60)
        sex = models.CharField(max_length=32, choices=gender, default='男')
        age = models.IntegerField()
    

    要在数据库中增加记录,在Django下的交互式命令行执行代码如下

    >>> from myapp.models import Person
    >>> person = Person(name="Big Shuang", sex="male", age=24)
    >>> person.save()
    

    即可在数据库表中成功添加一行记录,如下

    id name sex age
    1 Big Shuang male 24

    然后我们看下执行的代码,其实主要就是后两行
    第二行创建一个 Person 实例,这个时候只是在程序中有了,但是数据库中还没有
    第三行对该实例调用save方法,才会存储数据到数据库中。

    2 - 查(Select)——查找数据

    查找是个很复杂功能,这里只介绍一点基础的方法,详细的会在本章下一节展开讲讲。

    • 使用Model.objects.get(id=...),通过id查询Model表数据,其中Model是对应的模型名,该方法返回一个实例对象,查询不到会报错。
      示例如下(承接上文命令行中代码)
    >>> p = Person.objects.get(id=1)
    >>> p
    <Person: Person object (1)>
    >>> p.name
    'Big Shuang'
    >>> p.sex
    'male'
    >>> p.age
    24
    
    • 使用Model.objects.all()获取Model表所有数据,
      其中Model是对应的模型名,该方法返回一个QuerySet对象,该对象也会在下一节展开讲。
      QuerySet对象可使用遍历和切片操作。
      示例如下(承接上文命令行中代码)
    >>> persons = Person.objects.all()
    >>> p = persons[0]
    >>> p.name
    'Big Shuang'
    >>> p.sex
    'male'
    >>> p.age
    24
    

    3 - 改(Update)——修改数据

    Django里面,修改数据很简单,修改一下模型实例的属性就可以,然后调用save方法同步到数据库表即可。
    示例如下(承接上文命令行中代码)

    >>> p = Person.objects.get(id=1)
    >>> p.name = "Li hua"
    >>> p.save()
    

    执行后数据库表Person内容更新如下

    id name sex age
    1 Li hua male 24

    4 - 删(Delete)——删除数据

    删除数据也很简单。
    模型实例调用delete方法即可删除数据,
    同时不止模型实例可以调用delete方法,本文第二部分提到的QuerySet也可以调用delete方法删除QuerySet中所有行的数据。

    简单示例如下(承接上文命令行中代码)

    >>> p = Person.objects.get(id=1)
    >>> p.delete()
    (1, {'myapp.Person': 1})
    

    执行后数据库表Person中对应的数据将被删除。

  • 相关阅读:
    62. Unique Paths
    120. Triangle
    EBS预置文件作用收集整理
    ORA-20002: [WF_NO_USER] NAME=<name> ORIG_SYSTEM=NULL ORIG_SYSTEM_ID=NULL
    Oracle定义DES加密解密及MD5加密函数
    EBS获取附件URL
    Oracle EBS标准错误信息如何追踪 (Debug)
    更改EBS APPS 密码流程
    Oracle之物化视图
    Oracle EBS打补丁
  • 原文地址:https://www.cnblogs.com/BigShuang/p/14285590.html
Copyright © 2011-2022 走看看