如何在FastAPI中使用ORM函式庫進行資料運算
引言:
FastAPI是一個基於Python的現代化Web框架,它的設計靈感來自Starlette和Pydantic,是一個高效能的框架,特別適合用於建立快速、可伸縮和高效能的RESTful API服務。在FastAPI中,借助ORM(物件關係映射)庫,我們可以更方便地進行資料庫操作。本文將引導您如何在FastAPI中使用ORM庫進行資料操作,並提供一些程式碼範例。
一、ORM庫簡介
ORM(物件關聯映射)是一種將資料庫中的資料映射為物件的技術。 ORM函式庫能夠讓開發者透過定義物件模型來操作資料庫,而不用直接編寫SQL語句。在FastAPI中,常用的ORM函式庫有SQLAlchemy、Peewee等。本文以SQLAlchemy為例進行說明。
二、安裝和設定SQLAlchemy
在使用SQLAlchemy前,我們首先需要安裝SQLAlchemy函式庫。可以透過以下命令進行安裝:
pip install sqlalchemy
安裝完成後,我們需要設定資料庫的連線配置。在FastAPI中,可以在main.py檔案中加入以下程式碼:
from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" engine = create_engine(SQLALCHEMY_DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base()
上述程式碼中,我們建立了一個SQLite資料庫,並定義了SessionLocal用於建立資料庫會話。 SQLALCHEMY_DATABASE_URL是資料庫的連接的URL。
三、定義資料模型
在使用ORM進行資料運算之前,我們需要定義資料模型。可以在models.py檔案中定義資料模型。以一個範例使用者模型為例,範例如下:
from sqlalchemy import Column, Integer, String from database import Base class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String(50), unique=True, index=True) email = Column(String(50), unique=True, index=True) password = Column(String(100))
在上述程式碼中,我們定義了一個名為User的資料模型,並指定了資料表名為"users"。在資料模型中,我們可以定義各個欄位的類型等。
四、建立資料表
在使用ORM進行資料操作之前,我們需要建立對應的資料庫表。可以在main.py檔案中加入以下程式碼:
Base.metadata.create_all(bind=engine)
上述程式碼將在資料庫中建立所有定義的資料模型對應的表。
五、資料操作範例
以使用者模型為例,我們將給出一些常見的資料操作範例。
-
查詢所有使用者
from sqlalchemy.orm import Session from . import models def get_users(db: Session): return db.query(models.User).all()
在上述程式碼中,我們透過查詢所有使用者資料並傳回。
-
查詢單一使用者
from sqlalchemy.orm import Session from . import models def get_user_by_id(db: Session, user_id: int): return db.query(models.User).filter(models.User.id == user_id).first()
在上述程式碼中,我們透過使用者id查詢單一使用者資料並傳回。
-
建立使用者
from sqlalchemy.orm import Session from . import models, schemas def create_user(db: Session, user: schemas.UserCreate): hashed_password = hashlib.sha256(user.password.encode()).hexdigest() db_user = models.User(name=user.name, email=user.email, password=hashed_password) db.add(db_user) db.commit() db.refresh(db_user) return db_user
在上述程式碼中,我們透過將傳入的使用者資料儲存到資料庫並傳回。
-
更新使用者
from sqlalchemy.orm import Session from . import models, schemas def update_user(db: Session, user_id: int, user: schemas.UserUpdate): db_user = db.query(models.User).filter(models.User.id == user_id).first() if user.name: db_user.name = user.name if user.email: db_user.email = user.email if user.password: db_user.password = hashlib.sha256(user.password.encode()).hexdigest() db.commit() db.refresh(db_user) return db_user
在上述程式碼中,我們透過使用者id將傳入的更新資料儲存至資料庫。
-
刪除使用者
from sqlalchemy.orm import Session from . import models def delete_user(db: Session, user_id: int): db_user = db.query(models.User).filter(models.User.id == user_id).first() db.delete(db_user) db.commit() return {'message': f"User {user_id} deleted successfully"}
在上述程式碼中,我們透過使用者id從資料庫中刪除使用者資料。
結語:
透過上述的程式碼範例,我們可以看出,在FastAPI中使用ORM函式庫進行資料運算是相對簡單的。借助ORM函式庫,我們不需要直接寫SQL語句,而是可以透過物件模型進行資料庫操作,讓程式碼更加簡潔、可讀性更好。希望本文對您在FastAPI專案中使用ORM函式庫進行資料操作有所幫助。
以上是如何在FastAPI中使用ORM庫進行資料操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

choosearraysoverlistsinpythonforbetterperformanceandmemoryfliceSpecificScenarios.1)largenumericaldatasets:arraysreducememoryusage.2)績效 - 臨界雜貨:arraysoffersoffersOffersOffersOffersPoostSfoostSforsssfortasssfortaskslikeappensearch orearch.3)testessenforcety:arraysenforce:arraysenforc

在Python中,可以使用for循環、enumerate和列表推導式遍歷列表;在Java中,可以使用傳統for循環和增強for循環遍歷數組。 1.Python列表遍歷方法包括:for循環、enumerate和列表推導式。 2.Java數組遍歷方法包括:傳統for循環和增強for循環。

本文討論了版本3.10中介紹的Python的新“匹配”語句,該語句與其他語言相同。它增強了代碼的可讀性,並為傳統的if-elif-el提供了性能優勢

Python中的功能註釋將元數據添加到函數中,以進行類型檢查,文檔和IDE支持。它們增強了代碼的可讀性,維護,並且在API開發,數據科學和圖書館創建中至關重要。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境