Django之ORM使用——增、删、改、查、批量写入

----------------------->  Django 的学习之路,一路写,一路记

使用orm创建一张表,在models.py文件中加入建表类:

from django.db import models
from django.utils import timezone

class AllStatus(models.Model):
    name = models.CharField(max_length=20)
    status = models.IntegerField()
    enddate = models.DateTimeField(default=timezone.now())
    startdate = models.DateTimeField(default=timezone.now())

    class Meta:
        db_table = 'all_status'

通过命令行创建表到数据库:

python manage.py migrate      # 创建django管理表结构
python manage.py makemigrations working    # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate working    # 创建自建表结构

新建文件 dbopreation.py:

增:

from .models import AllStatus
from django.utils import timezone


def InsertAllStatus():
    try:
        for name in ["张三","李四","王五"]:
            insert = AllStatus(
                    name=name,
                    status=0,
                    startdate=timezone.now(),
                    enddate=timezone.now()
                    )
            insert.save()
        return True
    except Exception as e:
        print(e)
        return False

增,批量插入数据:

from .models import AllStatus
from django.utils import timezone


def InsertAllStatus():
    try:
        querysetlist = []
        for name in ["张三","李四","王五"]:
            querysetlist.append(AllStatus(
                name=name,
                status=0,
                startdate=timezone.now(),
                enddate=timezone.now()
            ))
        AllStatus.objects.bulk_create(querysetlist)
        return True
    except Exception as e:
        print(e)
        return False

----------------------------------------------

删、改、查数据:

from .models import AllStatus
from django.utils import timezone

# 删除表中所有数据
AllStatus.objects.all().delete()
# 删除表中符合条件数据
AllStatus.objects.filter(name="张三").delete()


# 修改张三的status值为1
AllStatus.objects.filter(name="张三").update(status=1)
# 更新name为张三,status为1的 enddate 时间为当前时间
AllStatus.objects.filter(name="张三",status=1).update(enddate=timezone.now())
# 或者
updatedate = AllStatus.objects.filter(name="张三",status=1).first()
updatedate.enddate = timezone.now()
updatedate.save()


# 查询所有数据
AllStatus.objects.all()
# 查询符合筛选条件的对象
AllStatus.objects.filter(name="张三")
# 查询符合筛选条件的对象,但返回值只能有一个,超过一个则报错
AllStatus.objects.get(name="李四")
# 返回 筛选条件不符合的数据(反选)
# 如果有多个参数,参数之间为且的关系
AllStatus.objects.exclude(name="张三")
# 对结果进行排序
AllStatus.objects.order_by("startdate","enddate")
# 对结果进行排序
AllStatus.objects.order_by("enddate").reverse()
# 统计
AllStatus.objects.filter(status=0).count()
# 返回第一条或最后一条数据
AllStatus.objects.first()
AllStatus.objects.last()
# 判断查询数据是否为空,有数据返回True,空则返回False
AllStatus.objects.filter(name="唐三藏").exists()
# 返回一个QuerySet,列表中每条数据为一个字典
AllStatus.objects.values()
# 返回一个QuerySet,列表中每条数据为一个元组
AllStatus.objects.values_list()
# 对结果去重
AllStatus.objects.filter(status=0).values("status").distinct()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值