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