【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.pswp.cn/news/41412.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41412.shtml
英文地址,請注明出處:http://en.pswp.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;讓我們來看…