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") 

  

posted on 2020-12-07 22:35  星空6  阅读(168)  评论(0编辑  收藏  举报

导航