Django ORM基本的增删改查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM基本的增删改查相关的知识,希望对你有一定的参考价值。
创建表
步骤:
1.app下models.py里创建类(继承models.Model)
from django.db import models class UserInfo(models.Model): # 自增主键如果不创建,将自动创建一个自增主键叫 id username = models.CharField(max_length=32) password = models.CharField(max_length=64)
2.配置settings.py的INSTALLED_APPS项添加app
3.执行命令 python manage.py makemigrations
python manage.py migrate
此时表已经生成,同时强大的Django还会为我们生成其他的表,暂时探讨其他表的用途。
可以看到Django为我们自动生成了id字段
添加记录
方式1:
from django.shortcuts import HttpResponse from app01 import models def addInfo(request): models.UserInfo.objects.create(username=‘lcg01‘, password=‘123‘) return HttpResponse(‘add success!‘)
方式2:
from django.shortcuts import HttpResponse from app01 import models def addInfo(request): obj = models.UserInfo(username=‘lcg2‘, password=‘456‘) obj.save() return HttpResponse(‘add success!‘)
结果表:
第一种方式也可以接收一个返回值,即此次增加的记录对象。
而且可以换一种更优雅的写法:
dic = {‘username‘: ‘lcg3‘, ‘password‘: ‘321‘} models.UserInfo.objects.create(**dic)
查询记录
def searchInfo(request): s = models.UserInfo.objects.all() print(s) return HttpResponse(‘search success!‘)
结果:
<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>
返回的是Django提供的一个Queryset类型,我们可以把它理解为一个列表,列表中每个元素都是一个UserInfo对象,每个对象内部封装了id、username、password。
def searchInfo(request): s = models.UserInfo.objects.all() for obj in s: print(obj.id, obj.username, obj.password) return HttpResponse(‘search success!‘)
结果:
1 lcg01 123 2 lcg2 456 3 lcg3 321
注意:即使是只找到一个记录对象,返回的也是Queryset类型。
s = models.UserInfo.objects.filter(username=‘lcg01‘, password=‘123‘) print(s) # <QuerySet [<UserInfo: UserInfo object>]>
可以使用first()获取第一个对象(不存在则返回None),通过count()获取对象个数。
s=models.UserInfo.objects.filter(id=1).first() print(s) # UserInfo object s=models.UserInfo.objects.filter(id=1).count() print(s) # 1
使用get()也可以获取一个对象,不过找不到就会报错
s=models.UserInfo.objects.get(id=100) print(s)
删除记录
models.UserInfo.objects.filter(username=‘lcg3‘).delete()
更新记录
更新所有
models.UserInfo.objects.all().update(password=‘666‘)
更新指定
models.UserInfo.objects.filter(id=1).update(password=‘999‘)
以上是关于Django ORM基本的增删改查的主要内容,如果未能解决你的问题,请参考以下文章
48.Python中ORM模型实现mysql数据库基本的增删改查操作
Python学习---django之ORM的增删改查180125