zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    Linux之find命令
    Android WebView如何加载assets下的html文件
    Android 静默安装
    Android listview下拉刷新 SwipeRefreshLayout
    AndroidManifest.xml 详解
    Android 查看内存使用状况
    Android invalidate() 和 postInvalidate()的区别
    Android动画之Interpolator和AnimationSet
    实现Fragment的切换和ViewPager自动循环设置切换时间
    android 实现橡皮擦效果以及保存涂鸦的功能
  • 原文地址:https://www.cnblogs.com/tangpg/p/9010610.html
Copyright © 2011-2022 走看看