zoukankan      html  css  js  c++  java
  • python测试开发django(11)--ORM操作数据库(增删改查)

    前言

    django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对mysql数据库增删改查操作呢?

    本篇详细讲解django操作mysql数据库

    新增数据

    接着前面数据库Users表创建成功后,如果我们在页面上注册用户的话,就需要在User表新增一条数据,比如,我们想在User表插入一组数据user_name=yoyo5,psw=5555

    在urls.py同一目录(helloworld/helloworld/)新建一个testdb.py脚本(脚本名称可随意命名)

    #testdb.py
    from django.http import HttpResponse
    from xjyn.models import Users
    
    #新增数据
    def add_person(request): #函数名可随意命名
        test=Users(user_name='hui6',
                   pwd='6666')
        test.save()
        return HttpResponse("hui6用户创建成功!")
    

     urls.py新增url访问地址

    #helloworld/helloworld/urls.py
    from django.conf.urls import url
    from django.urls import re_path,path
    from . import testdb
    
    urlpatterns=[
        url('^addu$',testdb.add_person),
    ]
    

     启动服务,python manage.py runserver

    浏览器输入http://127.0.0.1:8000/addu,就会看到页面显示:hui6用户创建成功! 

    查询数据库,会发现xjyn_users表新增了一个hui6的数据;

    更新数据

    如果需要修改数据库的某个数据,比如我想把hui6用户的pws改查123456

    在urls.py同一目录(helloworld/helloworld/testdb.py)的testdb.py脚本,继续写个update_pwd函数

    #testdb.py
    from django.http import HttpResponse
    from xjyn.models import Users
    
    #新增数据
    def addu(request):
        test=Users(user_name='hui1',
                   pwd=333)
        test.save()
        return HttpResponse("新增hui1成功")
    
    #更新数据
    def update_pwd(request):
        #方式一
        # test=Users.objects.get(user_name='hui6')
        # test.pwd=123456
        # test.save()
    
        #方式2
        # Users.objects.filter(user_name='hui6').update(pwd='888')
    
        #方式3  修改所有的pwd
        Users.objects.all().update(pwd=123456)
        return HttpResponse("<p>密码修改成功</p>")
    

     urls.py新增url访问地址

    #helloworld/helloworld/urls.py
    from django.conf.urls import url
    from . import testdb
    
    urlpatterns=[
        url('^upp$',testdb.update_pwd),
        url('^addu$',testdb.addu),
    ]
    

     浏览器输入http://127.0.0.1:8000/upp,就会看到页面显示:密码修改成功

    查询数据库,会发现xjyn_users表hui6的pwd对应值修改了。  

    删除数据

    如果user表里面的某个用户数据不想要了,也可以删除数据,testdb.py新增代码如下;

    #删除数据
    def deleteu(request):
        #方式1
        # test=Users.objects.get(user_name='hui6')
        # test.delete()
    
        #方式2
        #Users.objects.filter(user_name='hui1').delete()
        #方式3 删除所有数据
        Users.objects.all().delete()
        return HttpResponse("删除数据成功!")
    

     urls.py新增url访问地址

    #helloworld/helloworld/urls.py
    from django.conf.urls import url
    from . import testdb
    
    urlpatterns=[
        url('^upp$',testdb.update_pwd),
        url('^addu$',testdb.addu),
        url('^deleteu$',testdb.deleteu),
    ]
    

     浏览器输入http://127.0.0.1:8000/deleteu,就会看到页面显示:删除数据成功!

    查询数据库,会发现xjyn_users表所有数据都被清除了

     查询数据

    比如我要查询users表里面hui6对应的mail的值

    在urls.py同一目录(helloworld/helloworld/testdb.py)的testdb.py脚本,继续写个select函数;备注,先将数据库的mail值填入,不然查询结果为空,这里我已经添加邮箱123456@qq.com;

    testdb.py新增内容如下;

    #查询数据
    def select(request):
        #方式1
        # r=Users.objects.get(user_name='hui6').mail
    
        #方式2
        r=Users.objects.filter(user_name='hui6')[0].mail
        return HttpResponse("查询结果:{}".format(r))
    

    urs.py新增url访问地址

    #helloworld/helloworld/urls.py
    from django.conf.urls import url
    from . import testdb
    
    urlpatterns=[
        url('^upp$',testdb.update_pwd),
        url('^addu$',testdb.addu),
        url('^deleteu$',testdb.deleteu),
        url('^selectm',testdb.select),
    ]
    

     浏览器输入http://127.0.0.1:8000/selectm,就会看到页面显示:查询结果:123456@qq.com

    关于查询

    • 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM xjyn_users 等价于 Users.objects.all()
    • filter相当于SQL中的WHERE,可设置条件过滤结果Users.objects.filter(条件)
    • 获取单个对象Users.objects.get(条件)
    • 限制返回的数据 相当于SQL中的OFFSET 0 LIMIT 2;         Users.objects.order_by('name')[0:2]
    • 查询结果排序Users.objects.order_by("id")
    • 上面的方法可以连着使用Users.objects.filter(name="hui6").order_by("id") 

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    05day02wdt
    05day02pwm
    05day01ioctl_led
    04clock_06semqphore
    04lock_05seqlock
    04lock_03rwlock
    [git]入门-工作区、暂存区、版本库
    [git]入门-创建版本库
    [linux-脚本]shebang(shabang #!)
    [ffmpeg]安装
  • 原文地址:https://www.cnblogs.com/canglongdao/p/14100146.html
Copyright © 2011-2022 走看看