【Django】数据库的增删改查

简单的介绍下增删改

class MyOperations(View):
    def get(self, request):
        # objects已经集成了数据库的增删改查操作
        # 新建
        name = User.objects.get_or_create(name='啊哈', age=80, phone_number='88888888')
        user = User()
        user.name = '李四'
        user.age = 99
        user.phone_number = '12345678'
        user.save()

        # 查询
        user = User.objects.get(id=1)
        users=User.objects.all()
        print(users)

        # 更新
        user=User.objects.filter(id=1).update(age=9999)

        # 删除
        user = User.objects.get(id=1)
        user.delete()
        return render(request, 'User.html')


class User(models.Model):
    name = models.CharField(max_length=20, blank=True, null=True)
    age = models.IntegerField(default=0)
    phone_number = models.EmailField(blank=True, default='')
    # 创建时添加
    created_time = models.DateTimeField(auto_now_add=True)
    # 更新时变更时间
    modified_time = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

详细的介绍下查询📖

查询方式分类

  • 原生SQL
    • Table.objects.raw('select * from table')
  • 基于ORM
    • Table.objects.filter(name='xxx')

基于ORM常用的查询方法

可以通过dir(Table.objects)查询objects的方法:

['__class__', '__class_getitem__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slotnames__', '__str__', '__subclasshook__', '__weakref__', '_constructor_args', '_db', '_get_queryset_methods', '_hints', '_insert', '_queryset_class', '_set_creation_counter', '_update', 'aggregate', 'alias', 'all', 'annotate', 'auto_created', 'bulk_create', 'bulk_update', 'check', 'complex_filter', 'contribute_to_class', 'count', 'create', 'creation_counter', 'dates', 'datetimes', 'db', 'db_manager', 'deconstruct', 'defer', 'difference', 'distinct', 'earliest', 'exclude', 'exists', 'explain', 'extra', 'filter', 'first', 'from_queryset', 'get', 'get_or_create', 'get_queryset', 'in_bulk', 'intersection', 'iterator', 'last', 'latest', 'model', 'name', 'none', 'only', 'order_by', 'prefetch_related', 'raw', 'reverse', 'select_for_update', 'select_related', 'union', 'update', 'update_or_create', 'use_in_migrations', 'using', 'values', 'values_list']

其中常用的查询方法有:

  • Table.objects.all() 返回Table表中所有的数据
  • Table.objects.get(xx=xxx) 返回Table表中满足条件的一条数据
  • Table.objects.filter(xx=xxx) 返回Table表中满足条件的一条/多条数据
    • 值得注意的是,如果未查询到满足条件的数据,Table.objects.get(xx=xxx) 会抛出异常,Table.objects.filter(xx=xxx) 则返回空数据
  • Table.objects.all()/filter().exists() 返回是否有对象,True/False
  • Table.objects.all()/filter().count() 返回获取到的对象的数量
  • Table.objects.all()/filter().exclude(xx=xxx) 返回的数据中排除满足xx=xxx的
  • Table.objects.filter().distinct('name') 返回的数据中按照列name去重
  • Table.objects.filter().order_by('name') 返回的数据中按照列name排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AQin1012

求小鱼干呢~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值