fastapi 初始化 数据库表
时间: 2024-08-12 21:05:34 浏览: 249
FastAPI 是一个轻量级的 Web 框架,它本身并不直接处理数据库操作,而是通过异步 ORM (Object Relational Mapping) 库如 SQLAlchemy、Peewee 或 Tortoise ORM 等来集成数据库。以下是使用 FastAPI 和 SQLAlchemy 初始化数据库表的基本步骤:
1. **安装依赖**:
首先,你需要在项目中安装必要的依赖,例如 SQLAlchemy 和一个相应的数据库适配器(比如 PostgreSQL、MySQL 等)。
```bash
pip install fastapi uvicorn sqlalchemy
```
2. **设置环境变量**:
创建一个 `.env` 文件或者使用 Python 的 `os.environ` 来配置数据库连接信息,如用户名、密码、主机和端口等。
3. **创建数据模型**:
定义你的数据模型类,这将对应数据库表。假设有一个名为 User 的用户模型:
```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)
username = Column(String(50), unique=True)
email = Column(String(100), nullable=False)
```
4. **配置数据库连接**:
在 FastAPI 中,你可以选择使用 `Base.metadata.create_all()` 或者通过 ORM 的上下文管理来自动创建表,示例如下:
```python
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
engine = create_engine(os.environ.get("DATABASE_URL"))
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
```
5. **初始化应用**:
在 FastAPI 应用启动时,确保在启动函数中运行数据表的创建,通常放在 `app.on_event("startup")` 中:
```python
async def on_startup():
await get_db() # 这里会执行 User 表的创建
print("Database tables created.")
app.add_event_handler("startup", on_startup)
```
现在,当应用启动时,数据库表会被自动创建。每次部署或迁移数据库时,可以确保使用相同的脚本更新表结构。
阅读全文