Django笔记二十六之数据库函数之数学公式函数

本文首发于公众号:Hunter后端
原文链接:Django笔记二十六之数据库函数之数学公式函数

这一篇来介绍一下公式函数,主要是数学公式。

其中 sin,cos 这种大多数情况下用不上的就不介绍了,主要介绍下面几种:

  1. Abs() 绝对值
  2. Ceil() 向上取整
  3. Floor() 向下取整
  4. Mod() 取余
  5. Power() 乘方
  6. Round() 四舍五入
  7. Sqrt() 获取平方根

我们用到下面这个 model:

class MathFunction(models.Model):
    x = models.FloatField(null=True, default=None)
    y = models.FloatField(null=True, default=None)

1、Abs() 绝对值

先来创建一下数据:

from blog.models import MathFunction

MathFunction.objects.create(x=1.2, y=-6.3)

使用绝对值的函数:

from django.db.models.functions import Abs

obj = MathFunction.objects.annotate(x_abs=Abs('x'), y_abs=Abs('y')).get(id=1)

print(obj.x_abs)
print(obj.y_abs)

也可以在过滤的时候用该函数,但是需要先将这个函数注册,使用方法如下:

from django.db.models import FloatField
from django.db.models.functions import Abs

FloatField.register_lookup(Abs)
MathFunction.objects.filter(x__abs__lte=2)

2、Ceil() 向上取整

向上取整
和绝对值一样,可以在取数和过滤的时候使用

取值:

from django.db.models.functions import Ceil

obj = MathFunction.objects.annotate(x_ceil=Ceil('x'), y_ceil=Ceil('y')).get(id=1)

print(obj.x_ceil)
print(obj.y_ceil)

过滤:

from django.db.models import FloatField
from django.db.models.functions import Ceil

FloatField.register_lookup(Ceil)
MathFunction.objects.filter(x__ceil=2)

3、Floor() 向下取整

向下取整,使用方法同向上取整。

4、Mod() 取余

取模,也就是取余,两个数相除之后的余数。

MathFunction.objects.create(x=3.6, y=1.1)


from django.db.models.functions import Mod

obj = MathFunction.objects.annotate(mod=Mod('x', 'y')).get(id=2)
print(obj.mod)

其效果等效于 x % y

5、Power() 乘方

乘方,Power('x', 'y') 相当于 x ** y

MathFunction.objects.create(x=3, y=2)

from django.db.models.functions import Power

obj = MathFunction.objects.annotate(power=Power('x', 'y')).get(id=3)
print(obj.power)

6、Round() 四舍五入

四舍五入,示例如下:

from django.db.models.functions import Round

obj = MathFunction.objects.annotate(
    x_round=Round('x'),
    y_round=Round('y')
).get(id=1)

print(obj.x_round)
print(obj.y_round)

7、Sqrt() 获取平方根

MathFunction.objects.create(x=9, y=25)

from django.db.models.functions import Sqrt

obj = MathFunction.objects.annotate(x_sqrt=Sqrt('x'), y_sqrt=Sqrt('y')).get(id=4)

print(obj.x_sqrt)
print(obj.y_sqrt)

以上就是本篇笔记全部内容,下一篇将介绍数据库函数之文本函数。

如果想获取更多后端相关文章,可扫码关注阅读:
image

原文链接:https://www.cnblogs.com/hunterxiong/p/17338474.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django笔记二十六之数据库函数之数学公式函数 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • 详解Python字典查找性能

    详解Python字典查找性能 概述 Python中的字典是一种非常常用的数据结构,它能快速地将一个键映射到对应的值。但是,在字典中查找一个键的值时,性能并不总是相同的。本文将详细介绍Python字典查找性能的原理和如何进行性能优化。 Python字典的实现原理 Python中的字典实际上是由哈希表(hash table)实现的。哈希表是一种通过哈希函数,将键…

    python 2023年5月13日
    00
  • Python argparse 解析命令行参数模块详情

    Python argparse 解析命令行参数模块详情 Python argparse 是 Python 核心库中用于解析命令行参数的模块,它可以非常方便地处理命令行参数,提供了丰富的功能和选项。本文将介绍 argparse 模块的用法,让你明白如何在 Python 代码中使用 argparse 来解析命令行参数。 简介 argparse 模块是 Pytho…

    python 2023年6月3日
    00
  • 用Python的Turtle制作自己的星空

    想制作自己的星空?Python语言中一个名为Turtle的模块可以帮助您实现这一目标。Turtle是一个图形库,可以通过简单的命令控制海龟图像的行为,从而实现绘制各种图形,包括星空。 以下是用Python的Turtle制作自己的星空的完整攻略: 步骤一:导入Turtle模块和其他必要的模块 首先,需要导入Turtle模块,通过pip命令安装后才可以导入。此外…

    python 2023年5月18日
    00
  • python爬取全国水雨情信息详解

    Python爬取全国水雨情信息攻略 全国水雨情信息是我们日常生活中非常重要的信息之一,使用Python可以方便地爬取全国水雨情信息。本攻略将介绍使用Python爬取全国水雨情信息的示例代码,包括数据获取、数据处理、数据存储和示例。 步骤1:获取数据 在Python中,我们可以使用requests库获取全国水雨情信息。以下是获取全国水雨情信息的示例: impo…

    python 2023年5月15日
    00
  • python tkinter图形界面代码统计工具(更新)

    Python tkinter图形界面代码统计工具是一个用Python编写的工具,可以统计指定目录下的所有Python代码文件(扩展名为.py)的行数、文字数和代码行数,还可以将结果图形化展示在界面上。 下面是完整攻略: 安装Python tkinter模块 在开始使用之前,你需要先确保Python tkinter模块已经安装。如果你使用的是Python3版本…

    python 2023年6月3日
    00
  • Python对Tornado请求与响应的数据处理

    Tornado是一个Python的Web框架,它提供了高效的非阻塞I/O操作,适用于高并发的Web应用程序。在Tornado中,请求和响应的数据处理是非常重要的,本文将介绍Python对Tornado请求与响应的数据处理的完整攻略,包括以下内容: Tornado请求的数据处理 Tornado响应的数据处理 以下是两个示例说明,用于演示Python对Torna…

    python 2023年5月14日
    00
  • 在node中如何调用python脚本

    在 Node 中调用 Python 脚本的过程主要有两种方法: 方法一:使用 child_process 模块 首先需要在 Node 环境下安装 Python 的运行环境,一般情况下安装 Python3 即可。 在 Node 应用中,使用 child_process 模块对 Python 脚本进行调用和处理。 下面是一个简单的示例代码,通过 Node 调用 …

    python 2023年5月20日
    00
  • python如何快速生成时间戳

    想要快速生成时间戳,我们可以使用 Python 中的 time 模块和 datetime 模块。下面是具体步骤: 1. 导入模块 import time import datetime 2. 使用 time 模块生成时间戳 使用 time 模块中的 time() 函数可以获取当前时间的时间戳。时间戳是一个浮点数,表示自 Epoch(1970 年 1 月 1 …

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部