fastapi插入数据
时间: 2024-06-13 18:03:10 浏览: 221
FastAPI
FastAPI是一个轻量级的Web框架,用于构建现代、高性能的API。在使用FastAPI插入数据时,通常会涉及数据库操作,这里我们以SQLAlchemy为例,因为FastAPI本身并不直接管理数据库,而是依赖于ORM(对象关系映射)库来处理。
以下是使用FastAPI和SQLAlchemy插入数据的一般步骤:
1. 安装依赖:首先确保已安装`fastapi`、`uvicorn`(作为Web服务器)、`sqlalchemy`和一个合适的数据库驱动(如`alembic`用于迁移管理)。
```bash
pip install fastapi uvicorn sqlalchemy alembic
```
2. 配置数据库:在`settings.py`或类似文件中设置数据库连接信息,使用`sqlalchemy.create_engine`创建连接。
3. 创建模型(ORM类):定义一个代表数据库表的Python类,例如:
```python
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String, unique=True)
```
4. 创建数据库表:如果表不存在,使用Alembic创建迁移并应用到数据库。
5. 插入数据:在路由函数中,实例化数据库模型,调用`add()`方法添加到Session(`session = Session(bind=engine)`),然后提交事务:
```python
from fastapi import FastAPI, HTTPException
from sqlalchemy.orm import Session
app = FastAPI()
async def add_user(user: User, db: Session):
try:
db.add(user)
await db.commit()
return {"message": "User added successfully"}
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=str(e))
@app.post("/users/")
async def create_user(user: User, db: Session = Depends(get_db)):
return await add_user(user, db)
```
6. 使用`get_db`装饰器(在`dependencies.py`中)获取数据库连接并注入到依赖中:
```python
from fastapi import Depends
from sqlalchemy.orm import Session
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
```
阅读全文