python增删改查的框架_简单的Django框架增删改查操作

b582beee511ba184ccb85f9d7915b677.png

Django之orm对MysqL数据库的增删改查操作简介:

利用Django中orm来查找数据库中的数据,对数据库进行增、删、改、查:

增:新增数据

# 操作数据库user表新增记录

# 方式1:

user_obj = models.User.objects.create(name=username,password=password)

# 方式2:

user_obj = models.User(name=username,password=password)

user_obj.save()  # 对象调用save方法保存到数据库

138f6be76bf38d8ee202cf0be48d98dc.png

ba647ea26a25f202bad642336e67f7f2.png

02a3207b57d743084b999b857b58a3f9.png

查:user_list = models.User.objects.all()  # 获取user表所有的数据(QuerySet对象)

# 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句

user_obj = models.User.objects.all().first()   #从上面所有数据的QuerySet对象中取出第一个用户对象

user_list = models.User.objects.filter(password=555)

# filter过滤,查找条件password=555的所有用户数据,返回结果user_list为QuerySet对象(装有查询到的全部用户数据对象的一

个容器)

user_obj = models.User.objects.filter(password=555).first()

# 取出刚才容器中的第一个用户数据对象。

b8362cfc1c1aeb2284ca0433091a2541.png

ca897192cab63662ac63d7d9a47ec20a.png

d75477a8b930a59e55b6f1b93ee52bbe.png

Tips:除了用filter定位表记录的方法,还可以使用.get()方法:user_obj = models.User.objects.get(password='555')

这样查会报错:get() returned more than one User -- it returned 2!

原因:用get方法是直接获取单数据对象本身,报错的原因在于根据password='555'查询的数据是2个结果,那么就不是单个数据对象,

所以就报错了!

强调:用get方法查询条件不存在的时候会直接报错。

所以:不推荐使用get,推荐使用filter查询,就算条件不存在,会返回一个空的QuerySet对象

( )

这里引入一个小点:将查询到的的所有表记录传给html文件,进行页面渲染之后展现给用户。

templates文件夹内创建user_list.html文件:html>

Title

用户数据表

IDnamepassword

{% for user_obj in user_list %}

{{ user_obj.pk }}{{ user_obj.name }}{{ user_obj.password }}

{% endfor %}

1936cc45c8a7e4b335b486f625698509.png

创建一个展示用户数据的url路径:

my_Dproject/my_Dproject/urls.py中添加:url(r'^user_list/', views.user_list)

创建路径函数:

my_Dproject/app01/views.py中加函数:def user_list(request):

user_list = models.User.objects.all()

return render(request, 'user_list.html', {"user_list": user_list})

后面的字典还可以替换成locals(),代表函数内所有变量我当做参数传进前面的html文件中,进行动态页面渲染:return render(request, 'user_list.html', locals())

e81cc28b8622297b01ab3353ae045ace.png

开启my_Dproject项目,在浏览器输入url:http://127.0.0.1:8000/user_list/

22169a29c30930514815037187a5646e.png

这就是刚才我们通过增的操作,创建的user表和表中的2条记录。

改:

首先需要明白一点:改是建立在已经查到的数据基础上修改对应字段值的,所以改的前提必须有一个查的过程:

锁定单个表记录,用filter:user_obj = models.User.objects.filter(id=edit_id).first()# 再次强调如果不加.first(),返回的结果是一个QuerySet对象,而

不是用户数据对象

改:

方式一:

models.User.objects.filter(id=edit_id).upadte(name='banana', password='666')

注意:方式一update修改的数据可能不是一条记录,有可能把查询到的多条记录的name和password的值全部改成banana和666,类似

于批量操作。

当然如果能确定filter对象的唯一性比如条件为primary_key的id那么查找的数据肯定是一条记录,这样也可看作单个记录修改。

方式二:

user_obj = models.User.objects.filter(id=edit_id).first()user_obj.name = 'banana'user_obj.name = '666'user_obj.save()

编辑对象获取方式:

我们在表记录修改的时候一般都是需要获取到该条表记录的主键id值,这样就能精确定位修改该条记录了。所以需要一些手段来传递id值:

编辑对象的id的获取方式

方式1:

利用input隐藏一个标签

方式2:

form表单中加入GET请求数据,在views函数方法中通过request.GET.get(edit_id)来获取需要修改的id。

(虽然请求方式是POST,但可以在标签内加入GET请求参数,在views函数中能够同时通过request.POST和request.GET方法拿到不同

的数据)

删:

删除和修改方法类似:

方法一:models.User.objects.filter(password='555').delete()  # 会将queryset所有的数据对象全部删除

方法二:user_obj = models.User.objects.filter(password='555').first()

user_obj.delete()

最后补充一张Web框架实现的最基础的流程图:

9b8be143fc89907954cb30155f461e91.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值