介绍
在开发 Python 应用程序时,FastAPI 因其构建高性能解决方案的优势而脱颖而出。它速度快、操作简单,并支持异步编程,使其成为开发现代化、可扩展应用程序的理想选择。本教程将指导您如何使用 NoSQL 数据库设置 FastAPI 应用程序。NoSQL 数据库在存储和管理数据方面具有灵活性和可扩展性,使其成为需要管理多样化和复杂数据结构的应用程序的绝佳资源。.
先决条件
- 服务器运行的是 Ubuntu 系统,需要使用具有 sudo 权限的非 root 用户,并启用防火墙。如需了解具体设置方法,请从列表中选择您的 Ubuntu 发行版,并按照我们的服务器入门指南进行操作。请确保您运行的是受支持的 Ubuntu 版本。.
- 了解 Linux 命令行 如需了解命令行入门或复习相关知识,您可以查看这篇 Linux 命令行入门指南。.
- 在 Ubuntu 终端中运行 sudo apt-get update,以确保您的系统拥有从系统上配置的存储库中可用的软件的最新版本和安全更新。.
步骤 1 – 在您的计算机上设置 Python 环境
在本教程中,我们将使用 python3 包来运行命令。最新版本的 Ubuntu 已预装 Python 3,因此要验证其是否已安装,请运行以下命令:
python3 --version
如果错误仍然存在,您可以通过运行以下命令来安装/重新安装该软件包:
sudo apt-get install python3
接下来,您需要安装 pip 来安全地安装 Python 包及其依赖项。.
sudo apt-get install python3-pip
步骤 2 – 创建虚拟环境
如果您使用的是 Ubuntu 24.04 以下的版本,则无需创建虚拟环境,但将项目依赖项分开是一个好习惯。.
从 Python 3.11 和 pip 22.3 开始,新增了 PEP 668,规定 Python 基础环境应标记为«外部管理»,这意味着除非你在虚拟环境中工作,否则无法成功使用 pip 安装软件包。.
在此步骤中,您将为项目创建一个虚拟环境,以隔离项目的依赖项,避免不同软件包版本之间可能出现的冲突。请在终端中运行以下命令:
sudo apt-get install python3-venv
这将安装创建虚拟环境所需的 venv 软件包。.
python3 -m venv fastapi-env
此命令会在您的工作目录中创建一个名为 fastapi-env 的虚拟环境。要开始在此环境中工作,您需要启用它。.
source fastapi-env/bin/activate执行成功后,您将看到如下所示的终端前缀:
(fastapi-env) user@machine:~$
现在您可以开始在这个虚拟环境中安装所需的依赖项。.
步骤 3 – 安装所需的库和软件包
在此步骤中,您将安装一些成功完成本教程所需的软件包和库。.
首先,我们需要安装 Fastapi(构建 FastAPI 应用程序所必需的)和 Unicorn(运行 FastAPI 应用程序所必需的)。.
pip install fastapi uvicorn
在本教程中,我们将使用 MongoDB 作为 NoSQL 数据库。要从 FastAPI 内部与 MongoDB 交互,您需要安装引擎,这是一个用于 MongoDB 的异步 Python 驱动程序。.
pip install motor
步骤 4 – 在 Ubuntu 上安装和设置 MongoDB。
要在 Ubuntu 系统上安装 MongoDB,请在终端中运行以下命令:
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list执行成功后,此参数将返回 echo。现在快速执行:
sudo apt-get update
这样可以确保您在设置 MongoDB 密钥后获得最新更新。.
接下来,您需要在系统上安装 OpenSSL 依赖项,这是安装 MongoDB 所必需的。.
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb运行程序时,系统会提示您重启服务。重启后,使用以下命令安装 MongoDB:
sudo apt-get install -y mongodb
启动并启用 MongoDB 服务:
sudo systemctl start mongod
sudo systemctl enable mongod您可以通过运行以下命令来检查 MongoDB 服务的状态并测试连接:
sudo systemctl status mongod
mongo --eval 'db.runCommand({connectionStatus: 1})'
步骤 5 – 创建 FastAPI 应用程序
下一步是创建一个 FastAPI 应用程序。在工作文件夹中,创建一个名为 database.py 的文件:
nano database.py
这将打开一个空白文本编辑器。请在此处编写数据库连接逻辑。.
from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
client = AsyncIOMotorClient(MONGO_DETAILS)
db = client.mydatabase
collection = db.mycollection假设 mydatabase 集合中已填充了一些数据,接下来您将创建一个 main.py 文件来编写应用程序逻辑。在下面的 FastAPI 应用程序中,我们使用 database.py 文件中的路径定义了一个数据库连接,用于 AI 预测。通过这些路径,系统会对输入进行验证。.
nano main.py
在文本编辑器中,编写以下逻辑:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from sklearn.linear_model import LinearRegression
import numpy as np
from database import collection
app = FastAPI()
# simple dataset and model
x = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
model = LinearRegressions()
model.fit(x, y)
# define the Pydantic model for input validation
class InputData(BaseModel):
feature: float
# route_1 for predicting the output based on input feature
@app.post("/predict/")
async def predict(input_data: InputData):
try:
prediction = model.predict([[input_data.feature]])
return {"prediction": prediction[0]}
except Exception as ex:
raise HTTPException(status_code=400, detail=str(ex))
# route_2 to interact with MongoDB
@app.get("/items/")
async def get_item():
items = []
async for item in collection.find():
items.append(item)
return items
# route_3 to add a new item to MongoDB
@app.post("/items/")
async def create_item(item: dict):
new_item = await collection.insert_one(item)
created_item = await collection.fine_one({"_id": new_item.inserted_id})
return created_item以下是该程序功能的概要:
- 来自 sklearn 的线性回归模型:该模型根据输入特征预测输出。.
- 来自 Pydantic 模型的输入数据:此结构定义了预测端点的预期输入。在本例中,它是一个浮点数。.
- MongoDB 路由:/items/ 和 POST /items/ 路由允许您检索项目并将其插入到您的 MongoDB 集合中。.
步骤 6 – 运行 FastAPI 应用程序
要成功运行此程序,您需要安装程序中使用的库和软件包。.
pip install pydantic scikit-learn numpy
现在使用以下命令运行此程序:
uvicorn main:app --reload
该命令的输出结果如下:
Output
INFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXXX] using statreload
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.FastAPI 使用 Swagger UI 自动生成交互式 API 文档。您可以通过访问 http://127.0.0.1:8000/docs 来访问它。.
您可以使用 curl 或 Postman 等工具调用一个端点,该端点会根据您的输入预测值。.
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
步骤 7(可选)– 使用 Docker Compose 运行应用程序
您可以将应用程序容器化,并使用 docker-compose 运行它。容器化应用程序可以简化部署流程,使应用程序的部署、扩展和维护更加容易。.
结果
在本教程中,您学习了如何成功地使用 MongoDB 启动 FastAPI 应用程序,创建一个简单的基于 AI 的应用程序,该应用程序能够存储和检索输入预测。.
FastAPI 和 NoSQL 数据库的结合为构建和扩展 AI 驱动的应用程序提供了一个强大而灵活的环境。.









