欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Django ORM 查询表中某列字段值的方法

程序员文章站 2022-06-03 12:51:45
1.什么是orm orm全拼object-relation mapping. 中文意为对象-关系映射. 在mvc/mvt设计模式中的model模块中都包括orm2.orm优势(1)只需要面向对象...

1.什么是orm

  • orm 全拼object-relation mapping.
  • 中文意为 对象-关系映射.
  • 在mvc/mvt设计模式中的model模块中都包括orm

2.orm优势

(1)只需要面向对象编程, 不需要面向数据库编写代码.

  • 对数据库的操作都转化成对类属性和方法的操作.
  • 不用编写各种数据库的sql语句.

(2)实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.

  • 不在关注用的是mysql、oracle...等.
  • 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.

3.orm劣势

相比较直接使用sql语句操作数据库,有性能损失.
根据对象的操作转换成sql语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

下面看下django orm 查询表中某列字段值,详情如下:

场景:

有一个表中的某一列,你需要获取到这一列的所有值,你怎么操作?

解决办法:

有一个model为:event

方式一:

获取内容:
event.objects.values('title')

输出内容:
<queryset [{'title': '测试feed'}, {'title': '今天'}, {'title': '第三个日程测试'}, {'title': '第四个日程测试'}, {'title': '第五个测试日程'}]>

方式一获取到的是一个queryset,内容是键值对构成的,键为表的列名,值为对应的每个值。

方式二:

获取内容:
event.objects.values_list('title')

输出内容:
<queryset [('测试feed',), ('今天',), ('第三个日程测试',), ('第四个日程测试',), ('第五个测试日程',)]>

方式二获取到的也是一个queryset,但是内容是元祖形式的查询列的值。

但是我们想要的是这一列的值呀,这怎么是一个queryset,而且还包含了列名,或者是被包含在了元祖中?

查看高阶用法,告诉你怎么获取一个值的list,如:

['测试feed', '今天', '第三个日程测试', '第四个日程测试', '第五个测试日程']

到此这篇关于django orm 查询表中某列字段值的文章就介绍到这了,更多相关django orm 字段值内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!