Django ORM操作数据库

ORM 

  在Django MVT 设计模式中的Model,专门负责和数据库进行交互,对应的文件models.py。Model中内嵌了ORM框架,使得我们不需要面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查。

  ORM框架就是把数据库中的表与模型类相对应把数据库表中的行与相应模型类中的对象相对应把数据库中表的字段与模型类的属性相对应

 

一、数据查询

1、查询集, 也成查询结果集(QuerySet),表示从数据库中获取对象的集合,查询集不是简单的列表。

1) all(): 查询模型对应数据表中的所有数据。 返回QuerySet对象是一个由数据表中所有数据记录组成的列表。

from lc.models import BookInfo   # 导入模型
books = BookInfo.objects.all()

2) filter(): 查询符合条件的N个结果,返回结果为一个QuerySet对象,该对象是一个由数据记录组成的列表。

filter(id__exact=20)    # filter(字段名__运算符=值)

3) get(): 查询数据表中满足条件的数据。 get()方法只能用于查询返回符合要求只有一条数据的情况,当查询结果中没有记录或记录超过一条时会报错抛出异常。

book = BookInfo.objects.get(id=8)

 4) exclude(): 排除掉符合条件之后剩下的数据组成的结果集,该结果集是一个QuerySet对象,该对象是一个由数据记录组成的列表,相当于条件语句中not。

# 查询编号大于3的图书
books = BookInfo.objects.exclude(id__gt=3)

5) values(): 获取想要的字段。该方法返回的为一个QuerySet对象,该对象包含的数据类型为有指定字段和值形成的字典。最终返回值为由字典组成的列表。

# 查询出所有数据记录后筛选出数据记录的id、name、read_count字段
books = BookInfo.objects.all().values('id', 'name', 'read_count')

6) distinct(): 对查询出来的数据记录进行去重。

data = BookInfo.objects.all().values('is_delete').distinct()

2、运算符

1) 相等: exact

# exact相当于 等于号
book = BookInfo.objects.get(id__exact=1)
#简写形式
book = BookInfo.objects.get(id=1)

2) 包含及以指定值开头或结尾: contains、startswith、endswith

books = BookInfo.objects.filter(name__contains='')

books = BookInfo.objects.filter(name__startswith='')

books = BookInfo.objects.filter(name__endswith='')

3) 比较查询: gt大于、gte大于等于、lt小于、lte小于等于

# 查询编号大于3的图书
books = BookInfo.objects.filter(id__gt=3)

4) 空查询: isnull

# 查询书名为空的图书
books = BookInfo.objects.filter(name__isnull=True)

5) 范围查询: in 是否在范围内

# 查询编号未1或3或5的图书
books = BookInfo.objects.filter(id__in=[1,3,5])

待补充...

【参考资料】http://www.jnnr.cn/a/138159.html

posted @   宇宙刘  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示