Python SQLModel 簡介

TEEIS德國護膝夏天用薄款 優惠券冠生園 百花蜂蜜428g 擠壓瓶純蜂蜜巨奇嚴選 鞋子除臭劑360ml 多芬身體磨砂膏280g
健70%-75%酒精消毒棉片濕巾1418cm 80片/袋3袋大包清潔食品用消毒 優惠券AIMORNY52朵紅玫瑰永生香皂花同城配送非鮮花七夕情人節生日禮物送女友 熱賣妙潔棉柔抹布10片裝 廚房洗碗布家用神器 去油污強力吸水巾寶寶饞了嬰幼兒酸奶無添加白砂糖85g*10袋 兒童常溫奶寶寶輔食飲品
素養生活 有機紅花生400g 生花生米東北四粒紅花生 涼拌 雜糧粗糧真空包裝UG NX 12.0中文版從入門到精通ug nx建模曲面鈑金裝配工程圖 有限元分析 機械設計 數控加工編程 autocad教程cad教材自學版完全自學寶典樂品樂茶茶葉綠茶特級毛尖2025新茶明前春茶嫩芽散裝自己喝京東自營松鮮鮮松茸鮮調味料125g【0添加 松茸提鮮】代替鹽雞精味精煲湯炒菜調味 優惠券
本迪大號加厚洗臉盆2只裝36cm洗臉盆洗菜盆洗腳盆學生塑料盆泡腳盆公牛(BULL)開關插座 G12系列 十孔插座86型插座面板 G12Z423 白色周十五益生菌蜂蜜露孕婦開塞蜜露待產包用產后哺乳期兒童蜂蜜栓禮品36支小鹿藍藍嬰幼兒肉蔬多維蝴蝶面600g含30小袋嬰兒輔食果蔬營養面超值裝 優惠券

SQLModel 是一個基于 Python 類型注解的庫,用于簡化與關系型數據庫的交互。它由 FastAPI 的作者 Sebastian Ramirez 開發,結合了 SQLAlchemy(ORM)和 Pydantic(數據驗證)的核心功能,提供類型安全、直觀的 API。


核心特點
  1. 類型安全
    利用 Python 類型注解(如 str, int, Optional),IDE 可提供自動補全和錯誤檢查。
  2. 無縫集成
    兼容 FastAPI(自動生成 OpenAPI 文檔)、SQLAlchemy(底層操作)和 Pydantic(數據驗證)。
  3. 簡潔語法
    減少樣板代碼,聲明模型即可自動生成數據庫表。
  4. 異步支持
    支持 AsyncSession 異步操作(需 SQLAlchemy 1.4+)。

安裝
pip install sqlmodel

基礎用法
1. 定義模型
from sqlmodel import SQLModel, Fieldclass Hero(SQLModel, table=True):id: int | None = Field(default=None, primary_key=True)name: strsecret_name: strage: int | None = None
  • table=True:表示該類對應數據庫表。
  • Field:定義字段約束(如 primary_key=True)。
2. 創建數據庫與表
from sqlmodel import create_engineengine = create_engine("sqlite:///database.db")
SQLModel.metadata.create_all(engine)  # 創建表
3. 增刪改查操作
from sqlmodel import Session, select# 創建數據
hero = Hero(name="Spider-Man", secret_name="Peter Parker")# 插入數據
with Session(engine) as session:session.add(hero)session.commit()# 查詢數據
with Session(engine) as session:statement = select(Hero).where(Hero.name == "Spider-Man")hero = session.exec(statement).first()print(hero.secret_name)  # 輸出: Peter Parker# 更新數據
hero.age = 25
with Session(engine) as session:session.add(hero)session.commit()# 刪除數據
with Session(engine) as session:session.delete(hero)session.commit()

高級功能
  1. 關系(Relationships)
    定義表間關系(如一對多):

    class Team(SQLModel, table=True):id: int | None = Field(default=None, primary_key=True)name: strheroes: list["Hero"] = Relationship(back_populates="team")class Hero(SQLModel, table=True):team_id: int | None = Field(foreign_key="team.id")team: Team | None = Relationship(back_populates="heroes")
    
  2. 異步支持

    from sqlmodel.ext.asyncio.session import AsyncSessionasync with AsyncSession(engine) as session:result = await session.exec(select(Hero))heroes = result.all()
    
  3. FastAPI 集成
    直接在 FastAPI 中使用 SQLModel 作為請求/響應模型:

    from fastapi import FastAPI
    app = FastAPI()@app.post("/heroes/", response_model=Hero)
    def create_hero(hero: Hero):with Session(engine) as session:session.add(hero)session.commit()session.refresh(hero)return hero
    

優點 vs 缺點
優點缺點
? 類型安全 + IDE 友好? 生態較新,社區資源較少
? 減少 SQLAlchemy 樣板代碼? 復雜查詢仍需 SQLAlchemy 語法
? 完美兼容 FastAPI 生態? 不支持 NoSQL 數據庫
? 自動數據驗證(Pydantic)

適用場景
  • 需要類型安全 ORM 的 FastAPI 項目。
  • 中小型關系型數據庫應用(SQLite/PostgreSQL/MySQL)。
  • 快速原型開發。

總結

SQLModel 通過融合 SQLAlchemy 和 Pydantic,提供了現代化、類型安全的數據庫操作體驗。適合追求開發效率、類型檢查及 FastAPI 集成的項目。對于復雜場景,可結合原生 SQLAlchemy 使用。


Python 圖書推薦

書名出版社推薦
Python編程 從入門到實踐 第3版(圖靈出品)人民郵電出版社★★★★★
Python數據科學手冊(第2版)(圖靈出品)人民郵電出版社★★★★★
圖形引擎開發入門:基于Python語言電子工業出版社★★★★★
科研論文配圖繪制指南 基于Python(異步圖書出品)人民郵電出版社★★★★★
Effective Python:編寫好Python的90個有效方法(第2版 英文版)人民郵電出版社★★★★★
Python人工智能與機器學習(套裝全5冊)清華大學出版社★★★★★

JAVA 圖書推薦

書名出版社推薦
Java核心技術 第12版:卷Ⅰ+卷Ⅱ機械工業出版社★★★★★
Java核心技術 第11版 套裝共2冊機械工業出版社★★★★★
Java語言程序設計基礎篇+進階篇 原書第12版 套裝共2冊機械工業出版社★★★★★
Java 11官方參考手冊(第11版)清華大學出版社★★★★★
Offer來了:Java面試核心知識點精講(第2版)(博文視點出品)電子工業出版社★★★★★

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

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

相關文章

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API實戰:導出框架元素數據到Excel 在結構工程師的日常工作中,經常需要從ETABS模型中提取框架元素信息進行后續分析。手動復制粘貼不僅耗時,還容易出錯。今天我們來用簡單的VBA代碼實現自動化導出。 ?? 我們要實現什么? 一鍵點擊,就能將ETABS中所有框架元素的基…

springboot根據部署服務器生成機器碼+加密生成到期時間授權碼設置項目在服務器的到期時間

生成機器碼 首先需要在后端寫個獲取window或linux的機器碼&#xff0c;根據CPU序列號和硬盤序列號(Windows)&#xff0c;拼接得到 /*** 操作系統的工具類*/ public class OSUtils {/*** 獲取window or linux機器碼** return*/public static String getOSNumber() {Map<Str…

Thumb-2指令集及其與STM32的關系

Thumb-2指令集及其與STM32的關系&#xff1a; 1. Thumb-2指令集是什么&#xff1f; 本質&#xff1a;Thumb-2是ARM公司設計的混合指令集架構&#xff0c;首次在ARMv7架構中引入&#xff08;如Cortex-M3/M4/M7&#xff09;。 核心創新&#xff1a; 融合了傳統 32位ARM指令&…

Haption 力反饋遙操作機器人:6 自由度 + 低延遲響應,解鎖精準遠程操控體驗

Haption自2001年成立以來&#xff0c;始終專注于力反饋設備與定制化解決方案的設計、研發及銷售。作為工業級力反饋技術的先行者&#xff0c;其核心產品以高精度交互與可靠性著稱&#xff0c;已與達索系統、空客、Orano 等行業頭部企業達成深度合作&#xff0c;業務覆蓋工程仿真…

C# ExcelWorksheet 貼圖

C# ExcelWorksheet 貼圖 在C#中,如果你想在Excel工作表中插入圖片(例如,在ExcelWorksheet中貼圖),你可以使用ClosedXML或EPPlus這樣的庫來操作Excel文件。下面我將分別介紹如何使用這兩個庫來實現這一功能。 使用ClosedXML 首先,確保你已經安裝了ClosedXML包。你可以通…

Android15默認授權浮窗權限

我們經常有那種需求&#xff0c;客戶需要定制的apk集成在ROM中&#xff0c;并且默認授予其【顯示在其他應用的上層】權限&#xff0c;也就是我們常說的浮窗權限&#xff0c;那么我們就可以通過以下方法在wms、ams等系統服務的systemReady()方法中調用即可實現預置應用默認授權浮…

莫蘭迪高級灰總結計劃簡約商務通用PPT模版

莫蘭迪高級灰總結計劃簡約商務通用PPT模版&#xff0c;莫蘭迪調色板清新簡約工作匯報PPT模版&#xff0c;莫蘭迪時尚風極簡設計PPT模版&#xff0c;大學生畢業論文答辯PPT模版&#xff0c;莫蘭迪配色總結計劃簡約商務通用PPT模版&#xff0c;莫蘭迪商務匯報PPT模版&#xff0c;…

無人機EN 18031歐盟網絡安全認證詳細解讀

EN 18031 是歐盟針對無線電設備發布的網絡安全標準&#xff0c;于 2024 年 8 月正式發布&#xff0c;2025 年 1 月 30 日被列入《無線電設備指令》&#xff08;RED&#xff09;協調標準清單&#xff0c;并于 2025 年 8 月 1 日起強制執行。以下是對無人機 EN 18031 歐盟網絡安全…

Linux離線(zip方式)安裝docker

目錄 基礎信息操作系統信息docker信息 安裝實例安裝步驟示例 遇到的問題問題1&#xff1a;修改默認工作路徑啟動失敗問題2 找不到對應組 基礎信息 操作系統信息 OS版本&#xff1a;CentOS 7 64位 內核版本&#xff1a;3.10.0 相關命令&#xff1a; uname -rcat /etc/os-rele…

Go 語言中switch case條件分支語句

1. 基本語法 package main import "fmt" func main() {var extname ".css"switch extname {case ".html":fmt.Println("text/html")case ".css":fmt.Println("text/css") // text/csscase ".js":fmt.…

FFmpeg:Windows系統小白安裝及其使用

一、安裝 1.訪問官網 Download FFmpeg 2.點擊版本目錄 3.選擇版本點擊安裝 注意這里選擇的是【release buids】&#xff0c;注意左上角標題 例如我安裝在目錄 F:\FFmpeg 4.解壓 5.添加環境變量 把你解壓后的bin目錄&#xff08;即exe所在文件夾&#xff09;加入系統變量…

LLM基礎2_語言模型如何文本編碼

基于GitHub項目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 字節對編碼(BPE) 上一篇博文說到 為什么GPT模型不需要[PAD]和[UNK]&#xff1f; GPT使用更先進的字節對編碼(BPE)&#xff0c;總能將詞語拆分成已知子詞 為什么需要BPE&#xff1f; 簡…

監控升級:可視化如何讓每一個細節 “說話”

你有沒有遇到過這樣的情況&#xff1f; 監控畫面里明明有“異常”&#xff0c;但值班人員愣是沒發現&#xff1b; 報警響起卻不知道具體發生了什么&#xff0c;只能靠猜、靠翻錄像&#xff1b; 出了事回看錄像&#xff0c;才發現線索早就在眼前&#xff0c;只是沒人注意到………

單片機bootloader(APP的自我復制)

文章目錄 Bootloader 中 APP 的自我復制與啟動機制解析一、為什么要進行自我復制?二、程序整體結構概述三、匯編啟動代碼分析重點解釋:四、C 語言部分分析核心功能:五、start\_app 函數:手動啟動指定 APP六、總結七、適用場景Bootloader 中 APP 的自我復制與啟動機制解析 …

瀏覽器工作原理11 [#] this:從JavaScript執行上下文視角講this

引用 《瀏覽器工作原理與實踐》 在上篇文章中&#xff0c;我們講了詞法作用域、作用域鏈以及閉包&#xff0c;并在最后思考題中留了下面這樣一段代碼 var bar {myName:"time.geekbang.com",printName: function () {console.log(myName)} } function foo() {le…

【C語言】-遞歸

1、遞歸概念 遞歸&#xff08;Recursion&#xff09;是編程中一種重要的解決問題的方法&#xff0c;其核心思想是函數通過調用自身來解決規模更小的子問題&#xff0c;直到達到最小的、可以直接解決的基準情形&#xff08;Base Case&#xff09;。 核心&#xff1a;自己調用…

12.5Swing控件3Jpanel JOptionPane

JPanel JPanel是一個輕量級容器組件&#xff0c;用于組織和管理其他 GUI 組件。它繼承自JComponent類&#xff0c;屬于javax.swing包&#xff0c;可以容納按鈕、文本框、標簽等控件 JPanel 默認使用的布局管理器是 FlowLayout&#xff0c;也可以嵌套其他面板&#xff0c;以便…

MIPI信號為什么不能進行長距離傳輸

1.關于MIPI信號傳輸 MIPI信號是不適合長距離傳輸的。 2.MIPI的信號擺幅小&#xff0c;抗干擾能力比較弱 MIPI信號的差分擺幅比較小&#xff0c;通常只有100mV~200mV,遠遠低于LVDS的350mV的擺幅 小擺幅信號在長線纜上傳輸的時候更容易被噪聲淹沒&#xff0c;信噪比下降&#xf…

Qt的學習(二)

1. 創建Hello Word 兩種方式&#xff0c;實現helloworld&#xff1a; 1.通過圖形化的方式&#xff0c;在界面上創建出一個控件&#xff0c;顯示helloworld 2.通過純代碼的方式&#xff0c;通過編寫代碼&#xff0c;在界面上創建控件&#xff0c; 顯示hello world&#xff1b; …

Windows11+VS2019配置Libigl-2.4.1

Windows11VS2019配置Libigl-2.4.1 由于課題需要&#xff0c;所以出一篇配置Libigl的博客&#xff0c;制作不易&#xff0c;請多多點贊 一、官網下載 官網&#xff1a;https://libigl.github.io/ GitHub下載地址&#xff1a;https://github.com/libigl/libigl 這里我們選擇…