django 实践所需 数据库操作

返回程序集的方法

一、获取所有对象all

获取一个表中所有对象的最简单的方式是全部获取。可以使用管理器all() 方法:

>>> all_entries = Entry.objects.all()

all()方法返回包含数据库中所有对象的一个查询集


二、使用过滤器获取特定对象filter

all() 方法返回了一个包含数据库表中所有记录查询集但在通常情况下,你往往想要获取的是完整数据集的一个子集。

要创建这样一个子集,你需要在原始的的查询集上增加一些过滤条件。两个最普遍的途径是:

filter(**kwargs)
返回一个新的查询集,它包含满足查询参数的对象。
exclude(**kwargs)
返回一个新的查询集,它包含不满足查询参数的对象。
>>> Entry.objects.filter(pub_date__year=2006)



三、order_by

order_by( *fields)

默认情况下,QuerySet 根据模型Meta 类的ordering 选项排序。你可以使用order_by 方法给每个QuerySet 指定特定的排序。

例如:

>>> Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')

四、values

values( *fields)

返回一个ValuesQuerySet —— QuerySet 的一个子类,迭代时返回字典而不是模型实例对象。

每个字典表示一个对象,键对应于模型对象的属性名称。

>>> Blog.objects.values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}],
>>> Blog.objects.values('id', 'name')
[{'id': 1, 'name': 'Beatles Blog'}]

不返回程序集的方法

一、通过get 获取一个单一的对象get

filter() 始终给你一个查询集,即使只有一个对象满足查询条件 —— 这种情况下,查询集将只包含一个元素。

如果你知道只有一个对象满足你的查询,你可以使用管理器get() 方法,它直接返回该对象:


>>> one_entry = Entry.objects.get(pk=1)


二、count

count()

返回在数据库中对应的 QuerySet.对象的个数。 count() 永远不会引发异常。

例:

Entry.objects.count()
 
Entry.objects.filter(headline__contains='Lennon').count()

三、create

create( **kwargs)

一个在一步操作中同时创建对象并且保存的便捷方法. 如此一来:

>>> p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

和:

>>> p = Person(first_name="Bruce", last_name="Springsteen")

>>>p.save(force_insert=True)

是等同的.

四、update

update( **kwargs)

对指定的字段执行SQL更新查询,并返回匹配的行数(如果某些行已具有新值,则可能不等于已更新的行数)。

例如,要对2010年发布的所有博客条目启用评论,您可以执行以下操作:

>>> Entry.objects.filter(pub_date__year=2010).update(comments_on=False)

五、delete

delete()

QuerySet中的所有行执行SQL删除查询。立即应用delete()您不能在QuerySet上调用delete(),该查询已采取切片或以其他方式无法过滤。

例如,要删除特定博客中的所有条目:

>>> b = Blog.objects.get(pk=1)
 
>>> Entry.objects.filter(blog=b).delete()

 //一定要区别get filter value这几个看起来很像

例:

如果你接受到参数id,你想要输出数据库A的这个id的名字>>>先找到对象再找字段

>>>Entry.objects.get(id=id).sname

//像这样找某个对象的某个字段的(某个行的字段)可以用get

但是如果你要对某些程序集做处理,比如说输出全部的信息all然后for循环输出filter也是一样的,只是他对all再进行筛选而以,所以经常用在对程序集的修改和选择上


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值