如何使用 NoSQL 数据库设置 FastAPI 应用程序?

0 股票
0
0
0
0

介绍

在开发 Python 应用程序时,FastAPI 凭借其速度快、操作简单以及对异步编程的支持,是一个绝佳的选择。在本教程中,我们将探讨如何将 FastAPI 与 NoSQL 数据库配合使用,NoSQL 数据库为管理各种类型的数据提供了灵活性和可扩展性。.

先决条件
  • Ubuntu 服务器一个具有 sudo 权限且防火墙已启用的非 root 用户。.
  • Linux命令行简介。.
  • 命令 sudo apt-get update 在 Ubuntu 终端中运行命令,以确保您的系统拥有系统存储库中可用软件的最新版本和安全更新。.

注意:这些说明适用于最新版本的 Ubuntu:Ubuntu 24.04、Ubuntu 22.04 和 Ubuntu 20.04。如果您使用的是 Ubuntu 18.04 或更早版本,我们建议您升级到更新的版本,因为 Ubuntu 已不再支持这些版本。.

步骤 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

此命令已关闭。 虚拟环境 它将安装创建虚拟环境所需的一切。.

python3 -m venv fastapi-env

此命令会创建一个名为“虚拟环境”的虚拟环境。 fastapi-env 它会在你的工作目录下创建一个目录。要开始在这个环境中工作,你需要启用它。.

source fastapi-env/bin/activate

如果成功,您将看到如下所示的终端预览:

(fastapi-env) user@machine:~$

现在您可以开始在这个虚拟环境中安装所需的依赖项了。.

步骤 3 – 安装所需的库和软件包

在此步骤中,您将安装一些成功完成本教程所需的软件包和库。.

首先安装 FastAPI 我们将从构建应用程序所需的内容开始,然后 独角兽 这是运行 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 应用程序。在你的工作目录中,创建一个名为 `.fastapi.js` 的文件。 数据库.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

假设该集合 我的收藏 来自数据库 我的数据库 它里面充满了数据,现在你需要一个文件 main.py 创建一个包含应用程序逻辑的类。在下面的 FastAPI 应用程序中,通过以下方式连接到数据库: 数据库.py 人工智能预测的流程已经建立并定义。这些流程用于输入验证。.

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 路径路线 /项目/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}'

结果

在本教程中,您学习了如何成功地使用 MongoDB 部署 FastAPI 应用程序,并构建一个简单的基于 AI 的应用程序,该应用程序能够存储和检索输入预测。.

FastAPI 和 NoSQL 数据库的结合为构建和扩展基于 AI 的应用程序提供了一个强大而灵活的环境。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢