博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django学习笔记--数据库中的单表操作----增删改查
阅读量:4668 次
发布时间:2019-06-09

本文共 3477 字,大约阅读时间需要 11 分钟。

1.Django数据库中的增删改查

1.添加表和字段

# 创建的表的名字为app的名称拼接类名class User(models.Model):    # id字段 自增 是主键    id = models.AutoField(primary_key=True)    name = models.CharField(max_length=32)    pwd  = models.CharField(max_length=32,null=True)        #新增字段 设置为空或者指定默认值    age = models.IntegerField(null=True)    yy = models.CharField(default="你好")    # 删除字段,直接注释掉对应的属性    # 删除表,直接注释掉整个类即可

对表进行操作之后必须要执行数据库记录和同步数据库的操作

python3 manage.py makemigrations     数据库表变化记录pythons manage.py migrate            数据库同步命令

2.插入数据

根据创建的模型,对其进行赋值

# 添加到数据库方式一 :通过对象保存user = models.User(name=name,pwd=pwd)user.save()# 添加到数据库方式二 通过表模型固定的使用方式user = models.User.objects.create(name=name,pwd=pwd)# 返回值可以不用处理,直接调用这个方法,通过表名去创建对应的数据

3.为了方便对数据进行处理,在python脚本中调用Django环境

创建新的py文件import os# 构建模拟的django运行环境,在下面直接测试数据和修改对应的展示数据if __name__ == '__main__':    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoDay02.settings")    import django    django.setup()

4.对数据操作,增删改查

# 查询对应的数据,filter过滤数据,查询结果是一个queryset对象,可以理解为一个列表对象# first() 取出第一条数据res = models.User.objects.filter(id=1)print(res)# 删除对象,delete()把查询出来的对象都删除,ret对象不用太关注,返回值是影响的数据的数量和对应的值ret = models.User.objects.filter(name="你好").delete()# 删除方式二,获取对象,对象调用删除方法user =  models.User.objects.filter(id=2).first()user.delete()# 修改数据第一种方式res = models.User.objects.filter(id=3).update(name="我就是我")# 第二种方法user = models.User.objects.filter(id=3).first()user.name = "再次修改"user.save() #保存数据

5.单表查询的其他操作

1.all() 查询所有结果

# 获取User表中的所有数据users = models.User.objects.all()print(users)

2.filter(**kwargs) 筛选指定条件的对象,对个条件可以同时查询,相当于一个and操作

user =  models.User.objects.filter(id=2)

3.get(**kwargs) 返回筛选的对象,返回结果之后一个,如果返回的结果超过一个或者一个都没有就会抛出异常,可以查看get的源码会抛出两个异常

try:     models.User.objects.get(name__contains='zhang') except models.User.DoesNotExist:     print('值不存在') except models.User.MultipleObjectsReturned:     print("不止一个值") else:     print("有值成功")

4.exclude(**kwargs) 包含了所筛选条件不匹配的对象

# 把id不等于3的都传过来user = models.User.objects.exclude(id=3)

5.order_by(*field) 对查询结果进行排序,默认根据id排序,输入要排序的字段名,反向排序在对应的字段前添加-

res = models.User.objects.filter(name__contains="你好").order_by('name')res = models.User.objects.all().order_by('-name')

6.reverse() 对查询结果反向排序,必须在order_by之后才能使用reverse(),否则没有效果

users = models.User.objects.filter(name__contains="你好").reverse()

7.count() 返回查询的querySet对象的个数

users = models.User.objects.filter(name__contains="你好").count()

8.first() 返回第一条记录

user =  models.User.objects.filter(id=2).first()

9.last() 返回最后一条记录

user =  models.User.objects.filter(id=2).last()

10.exists() 如果querySet包含数据,就返回True,否则返回False

# 判断查询结果是否为空res = models.User.objects.filter(id=30).exists()print(res)

11.values(*field) 返回一个valueQuerySet对象一个特殊的QuerySet,运行后得到的是一个可迭代的字典序列,而不是一个model的实例化对象,可以传多个值进行取值操作

#获取对应的values,取出对应的name字段对应的值,返回的是一个字典ret = models.User.objects.all().values('name')print(ret)返回结果 

12.value_list(*field) 与values() 非常相似,返回的是一个元组序列,values返回的是一个字段序列,可以传多个值进行取值操作

# 获取对应的values,取出对应的name字段对应的值,返回的是一个元组ret = models.User.objects.all().values_list('name')print(ret)返回结果 

13.distinct() 从返回结果中删除重复数据

user =  models.User.objects.filter(name='zhangsan').distinct()

6.模糊查询

# 模糊查询,基于 __双下滑线模糊查询# 查询在某个区间的值,查询id在1,2,3,4,5区间的所有值ret = models.User.objects.filter(id__in=[1,2,3,4,5])ret = models.User.objects.filter(id__range=[1, 200])# id__in          在某个区间# id__gt          大于某个值# id__lt          小于某个值# id__gte         大于等于# id__lte         小于等于# id__range       在某个范围# id__contains    包含,# id__icontains   忽略大小写# id__startswith  以什么开始

转载于:https://www.cnblogs.com/zj901203/p/10899551.html

你可能感兴趣的文章
vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
查看>>
【Nginx】磁盘文件写入飞地发
查看>>
默认情况下安装的应用程序C盘后提示权限不足,当你开始介意。。。
查看>>
su root 后还是不能使用useradd ,useradd 等命令
查看>>
URL.createObjectURL图片预览
查看>>
js 中exec、test、match、search、replace、split用法
查看>>
Android开发笔记(一)手势识别
查看>>
mybatis 复习笔记03
查看>>
zoj 3703(背包)
查看>>
一种新的子波域滤波算法
查看>>
cookie之三天免登录代码
查看>>
1043 幸运号码 数位DP
查看>>
js18
查看>>
2018-2019-2 20175308实验一 《Java开发环境的熟悉》实验报告
查看>>
如何设置WIN7自动登录(去除登录密码)
查看>>
关于bash中if语法结构的广泛误解(转)
查看>>
10G整数文件中寻找中位数或者第K大数
查看>>
操作手机数据库的uri
查看>>
Python小应用1 - 抓取网页中的链接地址
查看>>
HTML表格和列表笔记&练习<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于表格的一些练...
查看>>