Python 輕量級的 ORM(對象關系映射)框架 - Peewee 入門教程

文章目錄

    • 基礎
      • 創建數據庫管理對象
      • 定義自己的模型
      • 連接數據庫并創建表
      • 插入數據
      • 查詢數據
      • 更新數據
      • 刪除數據
    • 進階
      • 復合主鍵模型示例
      • 復雜查詢示例(以Relation模型為例)

基礎

創建數據庫管理對象

from peewee import *db = MySQLDatabase('test_db', user='root', password='password', host='localhost', port=3306)

定義自己的模型


class User(Model):uid = AutoField() # 自增主鍵name = CharField(max_length=20)age = IntegerField(default=0)address = CharField(null = True) # 允許空class Meta:# 關聯數據庫,這是必選的database = db# 設置 編寫和排序規則,這是可選的# table_settings = ["DEFAULT CHARSET=utf8mb4", "COLLATE=utf8mb4_unicode_ci"]

連接數據庫并創建表


# 連接數據庫
db.connect()# 往數據庫創建表
db.create_tables([User, MyMeta])

插入數據


# 往數據庫插入一條數據
User.create(name = 'yao7777', age = 18)# 通過字典插入
userInfo = {'name':'yao888', 'age': 28}
User.insert(userInfo).execute()

查詢數據


users = User.select() # 獲取所有用戶信息
for user in users:print(user.name, user.age)users = User.select().where(User.name == 'yao7777') # 條件查詢
users = User.select().where(User.name == 'yao7777', User.age == 18) # 多條件查詢(AND)user = User.get_by_id(2) # 如果數據不存在會崩潰
user = User.get_or_none(User.uid == 900) # 如果數據不存在,返回 None
if user:print(user.name)

更新數據


users = User.select()
user = users[0]user.age = 28
user.address = '廣東廣州'
user.save()

刪除數據


users = User.select()
user = users[0]
# 刪除一條數據
user.delete_instance()# 刪除表和數據
User.drop_table()
# 刪除表數據
User.delete().execute()

進階

復合主鍵模型示例


class Relation(Model):'''關聯數據'''rid = IntegerField()'''倉庫 ID'''mid = IntegerField()'''數據元 ID'''star = IntegerField(default = 0)'''本期 star'''starPrev = IntegerField(default = 0)'''上期 star'''class Meta:database = dbprimary_key = CompositeKey('rid', 'mid') # 2個主鍵

復雜查詢示例(以Relation模型為例)

查找指定 mid 的所有數據,且排序按照 (star - starPrev) 的差值降序


relation = Relation.select(Relation.rid, Relation.star, (Relation.star - Relation.starPrev).alias('offsetStar')).order_by(SQL('offsetStar').desc()).where(Relation.mid == meta.id)

offsetStar 是給 (star - starPrev) 差值起的別名

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96920.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96920.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96920.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Java反射與動態代理詳解:從原理到實踐》

1. 反射(Reflection) 1.1 反射的概述 反射是Java語言的核心特性之一,它允許程序在運行狀態下動態獲取類的信息并操作類的成員(構造方法、成員變量、成員方法)。 專業定義 對于任意一個類,都能夠知道這個類的…

golang7 數組切片

本視頻詳細講解了Go語言中的集合類型數據結構,重點介紹了數組、切片、map和list四種集合類型。特別強調了切片和map的重要性,以及它們在實際開發中的應用。同時,詳細闡述了數組的定義、操作及其與切片之間的區別,包括數組類型與元…

k8s-容器化部署論壇和商城服務(小白的“升級打怪”成長之路)

目錄 一、配置文件編寫 1、數據持久化 2、mysql主從復制 3、php解析環境 4、nginx服務 5、redis主從復制 6、tomcat服務 7、操作命令 8、在每個node節點操作上 9、更改服務文件加入redis緩存和實現訪問動靜分離 在存儲主機上查看 10、更改商城應用文件 二、實現域…

智慧AI消防通道占用檢測在危險區域的應用

智慧AI消防通道占用檢測:構建工廠與倉庫的安全防線在工業生產與物流倉儲領域,工廠安全與倉庫安全始終是企業運營的核心命題。消防通道作為緊急情況下的“生命通道”,其暢通性直接關系到人員疏散效率與火災撲救效果。然而,傳統人工…

LangGraph-2-Demo

狀態:一個共享數據結構,表示應用程序的當前快照。它可以是任何 Python 類型,但通常是 TypedDict 或 Pydantic BaseModel。 節點:Python 函數,用于編碼代理的邏輯。它們以當前 狀態 作為輸入,執行一些計算或…

基于硅基流動API構建智能聊天應用的完整指南

基于硅基流動API構建智能聊天應用的完整指南 一、引言:AI編程工具重塑開發范式 人工智能編程工具正在徹底改變軟件開發的方式,使開發者能夠快速構建以前需要大量專業知識的復雜應用。本文將深入探討如何使用硅基流動(SiliconFlow)的API,結合…

深入解析MyBatis中#{}和${}的區別與應用場景

在MyBatis框架的使用過程中,SQL映射文件的編寫是核心工作之一。而#{}和${}這兩種參數占位符語法,雖然看起來相似,卻有著本質的區別。正確理解和使用它們,不僅關系到應用程序的安全性,還會影響系統性能。本文將全面剖析…

ELKB日志分析平臺 部署

ElasticSearch ELKB 日志分析 介紹 docker-compose一鍵部署ELK(elasticsearchlogstashkibana) 以下是使用 Docker Compose 部署 Elasticsearch、Logstash、Kibana 和 Beats(以 Filebeat 為例) 的完整方案,涵蓋配置文件、關鍵參數說明及部署步…

File IO 字節流 | Java 學習日志 | 第 12 天

File 1.概述 File表示路徑,可以表示文件和文件夾,可以存在也可以不存在 相對路徑(相對當前項目),絕對路徑。 構造方法File(file/string),File(file/string,string)。 public static void main(String[] ar…

基于SpringBoot的服裝公司進銷存管理系統設計與開發(代碼+數據庫+LW)

摘要 隨著服裝行業競爭的加劇,傳統手工或簡單電子表格管理進銷存的方式已難以滿足現代企業的需求,效率低下且易出錯。基于SpringBoot框架的服裝公司進銷存管理系統應運而生,旨在通過信息化手段提升運營效率和服務質量。系統特別設計了銷售員…

openFeign用的什么協議,dubbo用的什么協議

簡單直接的答案是:?OpenFeign?:默認使用 ?HTTP? 協議(通常是 HTTP/1.1,也支持 HTTP/2),通信格式為 ?RESTful JSON。?Dubbo?:默認使用 ?Dubbo 協議?(一種自定義的、基于 TCP…

Android SystemServer 系列專題【篇四:SystemServerInitThreadPool線程池管理】

本篇重點介紹一下SystemServerInitThreadPool,顧名思義此類針對SystemServer進程的提供了一套ThreadPool線程池的統一標準方案,下面從源碼和日志的角度來剖析一個這個類。1、SystemServerInitThreadPool單例設計SystemServerInitThreadPool的源碼路徑在f…

2014-2024高教社杯全國大學生數學建模競賽賽題匯總預覽分析

一、分析賽題核心意義收集近 11 年的賽題并非簡單的 “題目存檔”,而是為了從歷史規律、能力匹配、實戰準備三個維度為參賽者或研究者提供價值。1.1把握競賽命題趨勢,降低選題盲目性賽題命題往往緊扣當年社會熱點、科技前沿與行業痛點(如 202…

一個頭像圖片滾動輪播組件(React實現)

遇到一個效果,組件庫里沒有現成能用的組件,于是手搓了一個,傳入圖片url列表,和其他配置項即可直接使用。 輪播效果實現思路 假設共有10張圖片輪流滾動,輪播圖展示3張圖片。給正在輪播的圖片綁定visible類,輪…

從入門到理解:支持向量機的核心原理與實戰思路

一、SVM 的核心目標:找 “最好” 的超平面。1.1 什么是 “超平面”?超平面是一個幾何概念,簡單來說:在 2 維空間(平面)中,超平面是一條直線(1 維);在 3 維空間…

Python 辦公自動化實戰:Excel 批量處理 + 自動發郵件

Python 辦公自動化實戰:Excel 批量處理 自動發郵件關鍵詞: Python辦公自動化 ? Pandas ? OpenPyXL ? Email ? 定時任務 摘要: 每月底還在手動處理幾十份Excel報表并郵件發送?快來學習如何用Python全自動完成!本文…

高教杯數學建模2021-C 生產企業原材料的訂購與運輸

某建筑和裝飾板材的生產企業所用原材料主要是木質纖維和其他植物素纖維材料, 總體可分為 A,B,C 三種類型。該企業每年按 48 周安排生產,需要提前制定 24 周的原 材料訂購和轉運計劃,即根據產能要求確定需要訂購的原材料供應商&…

【Python系列】Flask 和 FastAPI對比

博客目錄1. 類型和設計目標2. 性能3. 異步支持4. 數據驗證和文檔5. 學習曲線和生態6. 使用場景示例對比Flask(同步)FastAPI(異步)總結Flask 和 FastAPI 都是 Python 中流行的 Web 框架,但它們的設計目標、特性和適用場…

把 AI 塞進「空調遙控器」——基于 MEMS 溫濕陣列的 1 分鐘極速房間熱場掃描

標簽:MEMS 陣列、熱場掃描、極速空調、TinyML、RISC-V、零樣本、離線推理、節能 ---- 背景:為什么空調遙控器要「畫圖」? 傳統空調只有一個溫濕度探頭,經常“東邊冷、西邊熱”。 ? 大客廳 30 ㎡,溫差 5 ℃&#xff1…

【機器學習】8 Logistic regression

本章目錄 8 Logistic regression 245 8.1 Introduction 245 8.2 Model specification 245 8.3 Model fitting 245 8.3.1 MLE 246 8.3.2 Steepest descent 247 8.3.3 Newton’s method 249 8.3.4 Iteratively reweighted least squares (IRLS) 250 8.3.5 Quasi-Newton (variabl…