
Python
使用 FastAPI 和 SQLAlchemy 管理事务
FastAPI 是一个快速(Fast)且高性能的 Python web 框架,而 SQLAlchemy 则是一个功能强大的 Python ORM(对象关系映射)工具。在开发 web 应用程序时,管理事务(包括会话和多次提交)是至关重要的。本文将介绍如何结合使用 FastAPI 和 SQLAlchemy 来管理事务。 使用 FastAPI 和 SQLAlchemy 创建事务首先,确保已经安装了 FastAPI 和 SQLAlchemy。接下来,我们将创建一个 FastAPI 应用并集成 SQLAlchemy。假设我们有一个简单的用户模型和数据库连接的设置。Pythonfrom fastapi import FastAPI, HTTPException, Dependsfrom sqlalchemy import create_engine, Column, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmaker, SessionSQLALCHEMY_Database_URL = "sqlite:///./test.db"# 创建数据库引擎engine = create_engine(SQLALCHEMY_Database_URL)# 创建会话工厂SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)# 创建基本模型Base = declarative_base()# 用户模型class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String) emAIl = Column(String, unique=True)# 创建表格Base.Metadata.create_all(bind=engine)# 初始化 FastAPI 应用app = FastAPI()管理事务和会话在 FastAPI 中,我们可以使用 Depends 来创建数据库会话,并将其传递给需要使用数据库的路由函数。
Python# 依赖函数来获取数据库会话def get_db(): db = SessionLocal() try: yield db finally: db.close()# 创建用户@app.post("/users/")def create_user(name: str, emAIl: str, db: Session = Depends(get_db)): user = User(name=name, emAIl=emAIl) db.add(user) db.commit() db.refresh(user) return user# 获取单个用户@app.get("/users/{user_id}")def get_user(user_id: int, db: Session = Depends(get_db)): user = db.query(User).filter(User.id == user_id).first() if not user: rAIse HTTPException(status_code=404, detAIl="User not found") return user在上面的示例中,get_db 函数作为一个依赖项,在每个路由函数中获取数据库会话。在创建用户时,我们使用了 db.add() 将用户添加到会话中,然后调用 db.commit() 来提交事务。最后,通过 db.refresh(user) 刷新数据库中的用户对象,以确保获取到与数据库同步的最新状态。 结束语使用 FastAPI 和 SQLAlchemy 结合管理事务可以有效地处理数据库操作。通过在需要时创建会话并手动控制提交和回滚,可以确保数据库操作的一致性和完整性。以上示例提供了一个简单的方式来管理事务,你可以根据实际需求进行进一步的定制和扩展。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号