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

yizhihongxing

本文首发于公众号: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 在字符串中加入变量的实例讲解可以通过字符串格式化来实现。字符串格式化常用的有三种方式:使用百分号(%)、使用字符串的format()方法和使用f-string。 使用百分号 使用百分号(%)进行字符串格式化最为常见。在字符串中需要添加变量的位置,使用%s占位符来代表后面会传入的参数。例如: name = ‘张三’ age = 18 print(…

    python 2023年6月5日
    00
  • 在PyCharm中三步完成PyPy解释器的配置的方法

    以下是在PyCharm中完成PyPy解释器配置的完整攻略: 步骤1:下载并安装PyPy 首先需要在官网上下载 PyPy 的安装包,选择对应操作系统和Python版本的安装包下载,然后按照常规的安装流程进行安装即可。 示例:假设我们需要在Windows 10上配置 PyPy3.6-7.3.5 起作为解释器。我们可以在 https://www.pypy.org/…

    python 2023年6月5日
    00
  • Python实例练习逆序输出字符串讲解

    Python实例练习中逆序输出字符串,是一个比较基础的字符串反转问题,可以通过多种方法实现,下面就来一一介绍。 方法一:切片反转 python中字符串类型是一种可迭代的数据类型,我们可以通过切片(slice)来反转字符串。代码如下: string = "hello world" reversed_string = string[::-1]…

    python 2023年6月5日
    00
  • pyppeteer执行js绕过webdriver监测方法上

    在本攻略中,我们将介绍如何使用pyppeteer执行JavaScript代码绕过webdriver监测方法。webdriver监测方法是一种常见的反爬虫技术,可以检测到使用Selenium等自动化测试工具进行网页操作的行为。我们可以使用pyppeteer库来模拟人类操作,绕过这种监测方法。 以下是一个完整攻略,包括两个示例。 步骤1:安装pyppeteer库…

    python 2023年5月15日
    00
  • python实现支付宝当面付(扫码支付)功能

    当面付是支付宝的一种扫码支付方式,即商家通过支付宝开放平台API接口生成一个二维码,顾客使用支付宝扫描该二维码进行支付。下面将详细介绍如何使用Python实现支付宝当面付功能。 1. 申请开发者账号 首先需要去支付宝开放平台官网申请开发者账号,并且创建应用获取app_id和支付宝公钥、私钥等信息。在创建应用时需要选择当面付功能作为接口权限。 2. 安装依赖库…

    python 2023年6月3日
    00
  • python抓取网页中的图片示例

    针对python抓取网页中的图片,我可以提供以下完整攻略: 一、安装相关库 首先,需要在本地python环境中安装一些相关的库,包括: requests:用于发送HTTP请求,获取网页的内容 beautifulsoup4:用于解析HTML文档,提取需要的信息 urllib:用于下载图片到本地 可以通过以下命令进行安装: pip install request…

    python 2023年6月3日
    00
  • Scrapy-redis爬虫分布式爬取的分析和实现

    下面我将结合示例详细讲解 “Scrapy-redis爬虫分布式爬取的分析和实现”的完整攻略。 一、Scrapy-redis分布式爬虫的概述 Scrapy-redis是基于Scrapy框架的Redis分布式爬虫,可以让我们更方便、高效地实现分布式爬取。相比于传统的爬虫框架,Scrapy-redis具有以下优势: 分布式能力:通过Redis数据库的使用实现了爬虫…

    python 2023年6月2日
    00
  • 非常简单的Python识别图片验证码实现过程

    下面我将详细讲解一下“非常简单的Python识别图片验证码实现过程”的完整攻略。 1.准备工作 在开始之前,我们需要安装以下几个库: requests:用于请求验证码图片 Pillow:用于处理图片 tesseract:用于识别验证码图片 安装方法:使用pip命令即可,如下所示: pip install requests Pillow pytesseract…

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