【Python百日进阶-Web开发-Peewee】Day271 - Peewee API文档 - 字段(二)

文章目录

      • 11.3.17 class UUIDField
      • 11.3.18 class BinaryUUIDField
      • 11.3.19 class DateTimeField
      • 11.3.20 class DateField
      • 11.3.21 class TimeField
      • 11.3.22 class TimestampField
      • 11.3.23 class IPField
      • 11.3.24 class BooleanField
      • 11.3.25 class BareField
      • 11.3.26 class ForeignKeyField
      • 11.3.27 class DeferredForeignKey

11.3.17 class UUIDField

class UUIDField

用于存储uuid.UUID对象的字段类。使用 Postgres,底层列的数据类型将是UUID。由于 SQLite 和 MySQL 没有原生 UUID 类型,因此 UUID 被存储为VARCHAR。

11.3.18 class BinaryUUIDField

class BinaryUUIDField

uuid.UUID用于以 16 字节有效存储对象的字段类。使用数据库的BLOB数据类型(或MySQL 中的VARBINARY,或Postgres 中的BYTEA)。

11.3.19 class DateTimeField

class DateTimeField([formats=None[, **kwargs]])

参数: 格式( list ) – 将字符串强制为日期时间时使用的格式字符串列表。
用于存储datetime.datetime对象的字段类。

接受一个特殊参数formats,其中包含日期时间可以编码的格式列表(对于不支持本机日期时间数据类型的数据库)。默认支持的格式是:

'%Y-%m-%d %H:%M:%S.%f' # year-month-day hour-minute-second.microsecond
'%Y-%m-%d %H:%M:%S' # year-month-day hour-minute-second
'%Y-%m-%d' # year-month-day

笔记
SQLite 没有本地日期时间数据类型,因此日期时间存储为字符串。这由 Peewee 透明地处理,但如果您有预先存在的数据,则应确保将其存储为 其他受支持的格式或其中一种格式。YYYY-mm-dd HH:MM:SS

year

在查询中引用存储在列中的值的年份。

Blog.select().where(Blog.pub_date.year == 2018)

month

在查询中引用存储在列中的值的月份。

day

在查询中引用存储在列中的值的日期。

hour

在查询中引用存储在列中的值的小时数。

minute

在查询中引用存储在列中的值的分钟。

second

在查询中引用存储在列中的第二个值。

to_timestamp()

返回特定于数据库的函数调用的方法,该函数调用将允许您将给定的日期时间值用作数字时间戳。这有时可以以兼容的方式简化日期数学等任务。

例子:

# Find all events that are exactly 1 hour long.
query = (Event.select().where((Event.start.to_timestamp() + 3600) ==Event.stop.to_timestamp()).order_by(Event.start))

truncate(date_part)

参数: date_part( str ) – 年、月、日、小时、分钟或秒。
返回: 将日期/时间截断为给定分辨率的表达式节点。
将列中的值截断为给定部分。例如,此方法可用于查找给定月份内的所有行。

11.3.20 class DateField

class DateField([formats=None[, **kwargs]])

参数: formats( list ) – 将字符串强制为日期时使用的格式字符串列表。
用于存储datetime.date对象的字段类。

接受一个特殊参数formats,其中包含日期时间可以编码的格式列表(对于不支持本机日期数据类型的数据库)。默认支持的格式是:

'%Y-%m-%d' # year-month-day
'%Y-%m-%d %H:%M:%S' # year-month-day hour-minute-second
'%Y-%m-%d %H:%M:%S.%f' # year-month-day hour-minute-second.microsecond

笔记
如果传入的值与格式不匹配,则按原样返回。

year

在查询中引用存储在列中的值的年份。

Person.select().where(Person.dob.year == 1983)

month

在查询中引用存储在列中的值的月份。

day

在查询中引用存储在列中的值的日期。

to_timestamp()

见DateTimeField.to_timestamp()。

truncate(date_part)

见DateTimeField.truncate()。请注意,只有年、月和日对 有意义DateField。

11.3.21 class TimeField

class TimeField([formats=None[, **kwargs]])

参数: 格式( list ) – 将字符串强制为时间时使用的格式字符串列表。
用于存储datetime.time对象的字段类(不是timedelta)。

接受一个特殊参数formats,其中包含日期时间可以编码的格式列表(对于不支持本机时间数据类型的数据库)。默认支持的格式是:

'%H:%M:%S.%f' # hour:minute:second.microsecond
'%H:%M:%S' # hour:minute:second
'%H:%M' # hour:minute
'%Y-%m-%d %H:%M:%S.%f' # year-month-day hour-minute-second.microsecond
'%Y-%m-%d %H:%M:%S' # year-month-day hour-minute-second

笔记
如果传入的值与格式不匹配,则按原样返回。

hour

在查询中引用存储在列中的值的小时数。

evening_events = Event.select().where(Event.time.hour > 17)

minute

在查询中引用存储在列中的值的分钟。

second

在查询中引用存储在列中的第二个值。

11.3.22 class TimestampField

class TimestampField([resolution=1[, UTC=False[, **kwargs]]])

参数:

  • resolution- 可以提供为 10 的幂,或作为指示要存储多少小数位的指数。
  • utc ( bool ) – 将时间戳视为 UTC。
    用于将日期时间存储为整数时间戳的字段类。亚秒级分辨率通过乘以 10 的幂得到一个整数来支持。

如果resolution参数为0 或 1,则使用第二个分辨率存储时间戳。2和之间的分辨率6被视为小数位数,例如resolution=3对应于毫秒。或者,可以将小数作为 10 的倍数提供,这样resolution=10将存储 1/10 秒的分辨率。

该resolution参数可以是 0-6或10、100 等,最高可达 1000000(对于微秒分辨率)。这允许亚秒级精度,同时仍使用IntegerFieldfor 存储。默认为第二分辨率。

还接受一个布尔参数utc,用于指示时间戳是否应为 UTC。默认为False。

最后,该字段default是当前时间戳。如果你不想要这种行为,那么显式传入default=None.

11.3.23 class IPField

class IPField

用于有效存储 IPv4 地址的字段类(作为整数)。

11.3.24 class BooleanField

class BooleanField

用于存储布尔值的字段类。

11.3.25 class BareField

class BareField([coerce=None[, **kwargs]])

参数: 胁迫– 用于将原始值转换为特定格式的可选函数。
未指定数据类型的字段类(仅限 SQLite)。

由于不强制使用数据类型,因此您可以声明没有任何 数据类型的字段。SQLite 虚拟表使用元列或无类型列也很常见,因此对于这些情况,您也可能希望使用无类型字段。

接受一个特殊coerce参数,一个函数,它接受来自数据库的值并将其转换为适当的 Python 类型。

11.3.26 class ForeignKeyField

class ForeignKeyField(model[, field=None[, backref=None[, on_delete=None[, on_update=None[, deferrable=None[, object_id_name=None[, lazy_load=True[, constraint_name=None[, **kwargs]]]]]]]]])

参数:

  • model ( Model ) – 要引用的模型或字符串“self”(如果声明自引用外键)。
  • field ( Field ) – 要引用model的字段(默认为主键)。
  • backref ( str ) – 反向引用的访问器名称,或“+”以禁用反向引用访问器。
  • on_delete ( str ) – ON DELETE 操作,例如’CASCADE’…
  • on_update ( str ) – ON UPDATE 动作。
  • deferrable ( str ) – 控制何时强制执行约束,例如.‘INITIALLY DEFERRED’
  • object_id_name ( str ) – 对象 ID 访问器的名称。
  • lazy_load ( bool ) – 在访问外键字段属性时获取相关对象(如果尚未加载)。如果禁用,访问外键字段将返回存储在外键列中的值。
  • constraint_name ( str ) - (可选)用于外键约束的名称。
    用于存储外键的字段类。

model (Model) – Model to reference or the string ‘self’ if declaring a self-referential foreign key.
field (Field) – Field to reference on model (default is primary key).
backref (str) – Accessor name for back-reference, or “+” to disable the back-reference accessor.
on_delete (str) – ON DELETE action, e.g. ‘CASCADE’…
on_update (str) – ON UPDATE action.
deferrable (str) – Control when constraint is enforced, e.g. ‘INITIALLY DEFERRED’.
object_id_name (str) – Name for object-id accessor.
lazy_load (bool) – Fetch the related object when the foreign-key field attribute is accessed (if it was not already loaded). If this is disabled, accessing the foreign-key field will return the value stored in the foreign-key column.
constraint_name (str) – (optional) name to use for foreign-key constraint.

class User(Model):name = TextField()class Tweet(Model):user = ForeignKeyField(User, backref='tweets')content = TextField()# "user" attribute  根据博文查作者charlie
>>> some_tweet.user
<User: charlie># "tweets" backref attribute
>>> for tweet in charlie.tweets:  # 查询作者为charlie的所有博文
...     print(tweet.content)
Some tweet
Another tweet
Yet another tweet

有关模型之间的外键、连接和关系的深入讨论,请参阅关系和连接。

笔记
外键没有特定field_type的,因为它们将根据与其相关的模型上的主键类型来获取其字段类型。

笔记
如果您手动指定 a field,则该字段必须是主键或具有唯一约束。

笔记
注意 SQLite 中的外键。默认情况下,ON DELETE 没有任何效果,这会对您的数据库完整性产生令人惊讶的(通常是不必要的)影响。即使您不指定 on_delete,这也会影响您,因为默认的 ON DELETE 行为(在不修改数据的情况下失败)不会发生,并且您的数据可以静默重新链接。最安全的做法是指定 实例化的时间 。pragmas={‘foreign_keys’: 1}SqliteDatabase

Take care with foreign keys in SQLite. By default, ON DELETE has no effect, which can have surprising (and usually unwanted) effects on your database integrity. This can affect you even if you don’t specify on_delete, since the default ON DELETE behaviour (to fail without modifying your data) does not happen, and your data can be silently relinked. The safest thing to do is to specify pragmas={‘foreign_keys’: 1} when you instantiate SqliteDatabase.

11.3.27 class DeferredForeignKey

class DeferredForeignKey( rel_model_name[, **kwargs])

参数: rel_model_name( str ) – 要引用的模型名称。
表示延迟外键的字段类。对于循环外键引用很有用,例如:

class Husband(Model):name = TextField()wife = DeferredForeignKey('Wife', deferrable='INITIALLY DEFERRED')class Wife(Model):name = TextField()husband = ForeignKeyField(Husband, deferrable='INITIALLY DEFERRED')

在上面的例子中,当Wife模型被声明时,外键 Husband.wife被自动解析并变成了一个正则 ForeignKeyField。

警告
DeferredForeignKey在声明和创建模型类时解析引用。这意味着如果您向 DeferredForeignKey已经导入和创建的模型类声明 a,则延迟的外键实例将永远不会被解析。例如:

class User(Model):username = TextField()class Tweet(Model):# This will never actually be resolved, because the User# model has already been declared.user = DeferredForeignKey('user', backref='tweets')content = TextField()

在这种情况下,您应该使用常规 或者您可以手动解析延迟外键,如下所示:ForeignKeyField

# Tweet.user will be resolved into a ForeignKeyField:
DeferredForeignKey.resolve(User)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/41412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络基础-神经网络补充概念-06-计算图

概念 “计算图”&#xff08;Computational Graph&#xff09;是一种用于表示数学表达式计算过程的图结构&#xff0c;广泛用于深度学习和自动微分等领域。计算图将复杂的数学表达式分解为一系列简单的计算节点&#xff0c;这些节点之间通过边连接&#xff0c;形成了一个有向无…

【jwt】JWT原理,JWT是用来解决什么问题的,如何自定义生成JWT数据,并且实现jwt数据的解码

JWT&#xff1a; JSON Web Token 1. jwt概述 用户登录成功后&#xff0c;服务端 如何知道客户端的每次请求对应的是哪个用户呢&#xff1f;怎么做&#xff1a;目前有两种方式实现. 1.1. 一是通过sessionId的方式&#xff0c;登录成功后服务端返回sessionId给客户端&#xff0…

【2023年11月第四版教材】《第5章-信息系统工程之数据工程(第三部分)》

《第5章-信息系统工程之数据工程&#xff08;第三部分&#xff09;》 2 数据工程2.1 数据建模2.2 数据标准化2.3 数据运维2.4 数据开发利用2.5 数据库安全 2 数据工程 2.1 数据建模 1、根据模型应用目的不同&#xff0c;可以将数据模型划分为三类:概念模型、逻辑模型和物理模…

【数据结构】栈与队列

1 栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出 LIFO (Last In First Out) 的原则。 压栈&#xff1a;栈…

力扣75——图广度优先搜索

总结leetcode75中的图广度优先搜索算法题解题思路。 上一篇&#xff1a;力扣75——图深度优先搜索 力扣75——图广度优先搜索 1 迷宫中离入口最近的出口2 腐烂的橘子1-2 解题总结 1 迷宫中离入口最近的出口 题目&#xff1a; 给你一个 m x n 的迷宫矩阵 maze &#xff08;下标…

Kafka中的 ISR 机制

ISR 是什么 ISR 的全称叫做&#xff1a; In-Sync Replicas &#xff08;同步副本集&#xff09;, 可以理解为和 leader 保持同步的所有副本的集合。ISR 动态维护了一个和 leader 副本保持同步副本集合&#xff0c;ISR 中的副本全部都和 leader 的数据保持同步。 设一个场景&a…

JupyterHub实战应用

一、JupyerHub jupyter notebook 是一个非常有用的工具&#xff0c;我们可以在浏览器中任意编辑调试我们的python代码&#xff0c;并且支持markdown 语法&#xff0c;可以说是科研利器。但是这种情况适合个人使用&#xff0c;也就是jupyter notebook以我们自己的主机作为服务器…

PostgreSQL逻辑备份pg_dump使用及其原理解析

一、原理分析 1、循环调用getopt_long解析命令行参数&#xff0c;将参数保存到static DumpOptions dopt;中 2、判断参数是否相容&#xff0c;不相容则退出&#xff1a; options -s/--schema-only and -a/--data-only cannot be used togetheroptions -c/--clean and -a/--data…

uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

uni-app中监听网络状态&#xff0c;并在嵌入webView页面的组件中添加网络监测 uni-app中监听网络状态 下载插件 打开网络异常组件页面&#xff0c;点击"下载插件并导入HBuilderX"按钮&#xff0c;打开HBuilderX软件后&#xff0c;选择需要导入插件的项目&#xff…

机器学习与模型识别1:SVM(支持向量机)

一、简介 SVM是一种二类分类模型&#xff0c;在特征空间中寻找间隔最大的分离超平面&#xff0c;使得数据得到高效的二分类。 二、SVM损失函数 SVM 的三种损失函数衡量模型的性能。 1. 0-1 损失&#xff1a; 当正例样本落在 y0 下方则损失为 0&#xff0c;否则损失为…

系统架构设计师-信息安全技术(1)

目录 一、信息安全基础 1、信息安全五要素 2、网络安全漏洞 3、网络安全威胁 4、安全措施的目标 二、信息加解密技术 1、对称加密 2、非对称加密 3、加密算法对比 三、密钥管理技术 1、数字证书 2、PKI公钥体系 四、访问控制技术 1、访问控制基本模型 2、访问控制的实现技术…

【Linux命令详解 | ssh命令】 ssh命令用于远程登录到其他计算机,实现安全的远程管理

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 连接远程服务器2. 使用SSH密钥登录2.1 生成密钥对2.2 将公钥复制到远程服务器 3. 端口转发3.1 本地端口转发3.2 远程端口转发 4. X11转发5. 文件传输与远程命令执行5.1 文件传输5.1.1 从本地向远程传输文件5.1.2 …

TensorFlow 的基本概念和使用场景

简介 TensorFlow 是一个开源的人工智能框架&#xff0c;由 Google 公司开发&#xff0c;用于构建和训练机器学习模型。 TensorFlow 的基本概念包括&#xff1a; 1. 张量 (Tensor): TensorFlow 中的基本数据结构&#xff0c;可以理解为多维数组。 2. 计算图 (Graph): TensorF…

深度学习入门-3-计算机视觉-图像分类

1.概述 图像分类是根据图像的语义信息对不同类别图像进行区分&#xff0c;是计算机视觉的核心&#xff0c;是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用&#xff0c;如&#xff1a;安防领域的人脸识别…

软考笔记——9.软件工程

软件工程的基本原理&#xff1a;用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清除的审查、开发小组的人员应少而精、承认不断改进软件工程事件的必要性。 软件工程的基本要素&#xff1a;方法、工具、过程 软件生…

babylonjs基于自定义网格生成围栏动画

效果&#xff1a; import { Vector3, Mesh, MeshBuilder, StandardMaterial, Texture, Animation, Color3 } from "babylonjs/core"; import imgUrl from "./image/headerwangge2.png" // 创建模型护栏特效 export default class CreateRail {constructor…

cocos creator 设置精灵镜像翻转效果

在 Cocos Creator 中&#xff0c;你可以通过代码来设置精灵节点的镜像翻转效果。具体来说&#xff0c;你可以使用精灵节点的 setScale 方法来实现这一点。以下是在代码中设置水平镜像翻转和垂直镜像翻转的示例&#xff1a; // 获取精灵节点的引用 let spriteNode cc.find(&qu…

小程序swiper一个轮播显示一个半内容且实现无缝滚动

效果图&#xff1a; wxml&#xff08;无缝滚动&#xff1a;circular"true"&#xff09;&#xff1a; <!--components/tool_version/tool_version.wxml--> <view class"tool-version"><swiper class"tool-version-swiper" circul…

数模论文写作细节要求

目录 优秀论文必要条件 数学建模的基本思路 第一步&#xff1a;了解问题——查文献、找数据 第二步&#xff1a;阐述要解决什么问题、用什么方法 其余步骤&#xff1a;给出数学模型、计算求解、对比结果与真实情况、应用于现实问题。 使用某种数学方法的理由和依据 创…

Python爬虫性能优化:多进程协程提速实践指南

各位大佬们我又回来了&#xff0c;今天我们来聊聊如何通过多进程和协程来优化Python爬虫的性能&#xff0c;让我们的爬虫程序6到飞起&#xff01;我将会提供一些实用的解决方案&#xff0c;让你的爬虫速度提升到新的高度&#xff01; 1、多进程提速 首先&#xff0c;让我们来看…