在 FastAPI 中實現數據庫事務,可以使用 databases
庫來操作數據庫,并使用 async with
語句來開啟和提交事務。以下是一個簡單的示例:
from fastapi import FastAPI
import databases
import asyncio
DATABASE_URL = "sqlite:///test.db"
database = databases.Database(DATABASE_URL)
app = FastAPI()
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
@app.post("/create_user")
async def create_user(name: str):
async with database.transaction():
query = "INSERT INTO users (name) VALUES (:name)"
await database.execute(query=query, values={"name": name})
return {"message": "User created successfully"}
if __name__ == "__main__":
asyncio.run(app.run_server())
在上面的示例中,我們首先創建了一個 database
對象來連接數據庫。然后在應用啟動時通過 startup
事件來連接數據庫,在應用關閉時通過 shutdown
事件來斷開數據庫連接。
在 create_user
路由中,我們使用 async with database.transaction()
來開啟一個事務。在事務中,我們執行插入用戶數據的 SQL 查詢,并通過 database.execute()
來執行查詢操作。
通過以上方法,就可以在 FastAPI 中實現數據庫事務操作。