django-mysql表的增删改查

1.增加数据

调用该路由执行ModelsCaozuo的处理方法

第一种实例化类

class ModelsCaozuo(View):
    ''' 数据库增加数据 '''
    def get(self, request):
        article = Article()
        article.title = "怎样添加一条表的数据,它拥有多个字段"
        article.content = "实例化model,通过.attr赋值"
        article.message = "使用django的save持久化数据"
        article.save()
        return HttpResponse("%s<br>%s<br>%s" % (article.title, article.content, article.message))

第二种不实例化

class ModelsCaozuo1(View):
    ''' 数据库增加数据 '''
    def get(self, request):
        Article(
            title="添加数据不实例化,直接使用类",
            content="66666666666",
            message = "同样通过django的save持久化数据"
        ).save()
        return HttpResponse("%s<br>%s<br>%s" % (Article.title, Article.content, Article.message)) # 取不到数据?

第三种新增数据

class ModelCaozuo2(View):

    def get(self, request):
        Article.objects.create(title="大标题", content=datetime.now(), message='666')
        return HttpResponse('ojbk')

2.查询数据

Article.object.all()  ; Article.object.get()  ; Article.object.filter() ;Article.object.exclude()

查询Article表中所有数据  Article.object.all()

  ps: 返回多条数据(Article的实例的集合, for in)

class ModelsCaozuo2(View):
    ''' 查询Article表数据的常用方法'''
    def get(self, request):
        content_all = Article.objects.all() # 可以切片 content_all[::] 不能使用负值切片
        print content_all # QuerySet实例  列表 可 for in  # <QuerySet [<Article: Article object>, 
<Article: Article object>]
     print content_all.values() # 返回字典形式的数据 ps:必须是QuerySet集合 [{'id':1,'name':'xiaoming'},{'id':2, 'name': 'xiaodong'}]
     print content_all.count() # 数据条数

     Article.object.latest('id') # latest根据字段id先进行排序返回最后一条数据
     Article.object.earliest('id') # earliest根据字段先排序,返回最久远的数据

     Article.object.first() # 获取,默认排序的第一条数据。可根据order_by排序
     Article.object.last() # 最后一条数据

     # exact, iexact
     Article.object.filter(id=1) # 查询id=1的数据
     Article.object.filter(id__exact=1) # 等同上
     Article.object.filter(id__iexact=1) # 等同上 但是忽略大小写
     
     # contains, icontains
     
Article.object.filter(content__contains="a") # 字段content下,数据内容包含 “a”的所有数据
     Artocle.object.filter(content__icontains="a") # 不包含“a”的数据
    
     # in
     Article.object,filter(id__in=[1,2,3]) # 判断字段id的值是否在列表中,是则获取出来

     # gt大于, gte大于等于, lt小于, lte小于等于, startwith, istartwith忽略大小写, endwhith, iendwith忽略大小写

      # range:区间查询

      start_date = datetime.date(2005, 1, 1)
      end_date = datetime.date(2018, 1, 1)
      Artucle.objects.filter(make_time__range=(start_date, end_date))
     # null
     Article.object.filter(age__null=True) # age字段为空的所有数据
return render(request, 'mysql_select.html', locals())
mysql_select.html  页面获取属性
<body>
{% for con in content_all %} 每一条表中数据对应一个Article类的实例con
    {{ con.title }}<br>
    {{ con.content }}<br>
    {{ con.message }}<br>
{% endfor %}
</body>

 查询Article表中单条数据  Article.object.get()

  ps 只返回一条数据(所以只是返回单个Article实例),如果数据有多条或者没有 会报错

class ModelsCaozuo3(View):
    ''' 查询表的数据 '''
    def get(self, request):
        data1 = Article.objects.get(pk=1) # pk 通过主键查询
        data2 = Article.objects.get(id=1) # id 通过id查询   一般id字段设置为主键
     data3 = Article.object.exclude(id=1) # 过滤符合条件的数据,获取其它数据
     data4 = Article.object.all().order_by('-id') # 通过id排序,"-"代表倒序
return render(request, 'mysql_select1.html', locals())

 3.批量和单条删除数据

  ps:没有查到数据  不会报错

class ModelsCaozuo4(View):
    ''' 批量和单条删除表数据 '''
    def get(self, request):
        Article.objects.filter(n=2).delete() # 删除Article中所有 字段n=2的数据
        Article.objects.filter(id=11).delete() # 删除Article 字段id=11的单条数据
        return HttpResponse('ojbk')

4.修改数据

class ModelsCaozuo5(View):
    ''' 批量和单条修改数据 '''
    def get(self, request):
        # 批量 把字段n=3的所有数据  的字段n,message改值
        Article.objects.filter(n=3).update(n=4,message="把n从3改成4了")
        # 单条 先get单条Article数据的实例  和批量删除格式不同
        article = Article.objects.get(pk=6)  # get如果有多条数据或者无数据 则报错,只返回一条数据
        article.n = 3
        article.save() # 记得save
        return HttpResponse('ojbk')
原文地址:https://www.cnblogs.com/tangpg/p/9010610.html