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")
浙公网安备 33010602011771号