day18-DjangoORM基本增删改查

一、前言

  今天来学习一下django的orm的增加,删除,修改和查询,虽然我们之前学过sqlaclmy的面向对象数据库的操作,但是django的orm有自己的一套,我们还是来学学django是如何操作的吧。

二、前提

2.1、urls的设置

说明:我们是通过一个请求,来操作这些动作的,所以我们先设置一个urls.py,当然这个是在某个app里面设置的,我们这边就设置为cmdb吧!

from django.urls import re_path,path
from app01 import views

urlpatterns = [
    path('orm/',views.orm),
]

所以访问的路劲是:http://127.0.0.1/cmdb/orm

2.2、modles的设置

说明:首先我们应该在modles里面设置好你的表结构,然后再导入类模块

from django.db import models

# Create your models here.

class UserInfo(models.Model):

    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

三、 ORM基本增删改查

3.1、增加

说明:增加数据

from app01 import models
def orm(request):
    #第1种方法,推荐使用这种
    models.UserInfo.objects.create(username='sbh',password='123')

    #第2种方式
    obj = models.UserInfo(username='shuaigaogao',password='456')
    obj.save()

    #第三种方式,在django2.0上没跑通,是第一种的基础上改进的
    dic = {'username':'honggege','password':'6969'}
    models.UserInfo.objects.create(**dic)

    return HttpResponse("orm")

3.2、查询

说明:查询数据

from app01 import models
def orm(request):
    #查询所有字段数据
    result = models.UserInfo.objects.all()

  #精确查询某个字段,比如:select usernname from app01_userinfo where username="shuaigaigai"
  result = models.UserInfo.objects.only("username").filter(username="shuaigaogao")  

   #根据filter,查询过滤后数据
   result = models.UserInfo.objects.filter(username='shuaigaogao')

   #id>1
   result = models.UserInfo.objects.filter(id__gt=1)
   #id<1
   result = models.UserInfo.objects.filter(id__lt=1)
   #id>=1
   result = models.UserInfo.objects.filter(id__gte=1)
   #id<=1
   result = models.UserInfo.objects.filter(id__lte=1)

   #查询后,获取第一条数据
   result = models.UserInfo.objects.filter(username='shuaigaogao').first()
   print(result)  
   #输出 
  UserInfo object (2) 这一个对象,通过这个对象获取id,username,password

    #查询后,获取第一条数据,但是如果这条数据不存在会报错
    result = models.UserInfo.objects.get(username='shuaigaogao')

    #filter满足两个条件的过滤
    result = models.UserInfo.objects.filter(username='shuaigaogao',password="6969")

    for row in result:
        print(row.id,row.username,row.password)
    print(result)
    #输出
    2 shuaigaogao 6969
    ]> 

    return HttpResponse("orm")

注意了:我们看到了result的返回值是QuerySet类型,这个类型是有django提供的。它是以列表的形式输出,然后里面的每一个元素,其实都是UserInfo的对象。这边的每一个对象里面包括了你这个UserInfo类表里面的所有属性,这边的属性有:id,username,password。通过orm的code,看看是转换什么sql语句的,这个需要用到obj.query功能,但是first不能用:

#精确查询某个字段
result = models.UserInfo.objects.only("username").filter(username="shuaigaogao")
print(result.query)
#输出
SELECT "app01_userinfo"."id", "app01_userinfo"."username" FROM "app01_userinfo" WHERE "app01_userinfo"."username" = shuaigaogao

#查询所有
result = models.UserInfo.objects.all()
print(result.query)

#输出
SELECT "app01_userinfo"."id", "app01_userinfo"."username", "app01_userinfo"."password" FROM "app01_userinfo"

#筛选条件查询
result = models.UserInfo.objects.filter(username="shuaigaogao")
print(result.query)

#输出
SELECT "app01_userinfo"."id", "app01_userinfo"."username" FROM "app01_userinfo" WHERE "app01_userinfo"."username" = shuaigaogao

3.3、删除

说明:删除数据

from app01 import models
def orm(request):
    #删除所有数据
    models.UserInfo.objects.all().delete()
  
   #删除符合id=1条件的数据
   models.UserInfo.objects.filter(id=1).delete()

    #删除符合password=123 and username='sbh'条件的数据
    models.UserInfo.objects.filter(password=123,username='sbh').delete()

    return HttpResponse("orm")

3.4、更新

说明:更新数据

from app01 import models
def orm(request):
    #更新所有数据
    models.UserInfo.objects.all().update(password="6969")

    #更新符合username="shuaigaogao"条件的数据
    models.UserInfo.objects.filter(username="shuaigaogao").update(password="6868")

    return HttpResponse("orm")

3.5、查询补充

from app01 import models
def orm(request):
    #相当于not in就是不等于
    models.UserInfo.objects.exclude(id=1)
    #排序
    models.UserInfo.objects.all().order_by('id')

    #相当于between....and...
    models.UserInfo.objects.filter(id__range=[1,2])

    #相当于in
    models.UserInfo.objects.filter(id__in=[1,2,3])
    #切片
   models.UserInfo.objects.all()[7:10]

 

转载于:https://www.cnblogs.com/zhangqigao/articles/8530220.html

你可能感兴趣的:(数据库,python)