استفاده از Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو Ubuntu
۲۷ بهمن ۱۴۰۳
FastAPI به سرعت به عنوان یک فریمورک وب با عملکرد بالا و کاربرپسند برای ساخت APIهای پایتونی محبوب شده است. زمانی که با یک پایگاه داده رابطهای ترکیب شود. میتوان از FastAPI برای ایجاد برنامه های قدرتمند دو مقیاس پذیر استفاده کرد. این راهنما شما را در فرآیند راهاندازی یک برنامه FastAPI با یک پایگاه داده رابطهای بر روی یک سرور Ubuntu 24.04 راهنمایی میکند.
در این راهنما، همه چیز از نصب ابزارهای ضروری تا پیکربندی پایگاهداده و ایجاد API Endpoint ها پوشش داده شدهاست. با لیارا همراه باشید، تا با این فریمورک محبوب آشنا شوید و بتوانید از آن استفاده کنید.
در ادامه خواهید خواند:
- پیشنیازها
- راه اندازی محیط پایتون
- ایجاد و فعال سازی محیط مجازی
- نصب و راه اندازی PostgreSQL
- ایجاد یک برنامه نمونه پایتون
- نصب کتابخانه های مورد نیاز
- اجرای برنامه پایتون
- تست کردن Endpoint ها (اختیاری)
- جمع بندی
پیشنیازها
- یک سرور که Ubuntu روی آن اجرا شود، همراه با یک کاربر غیر ریشه (non-root) که دارای دسترسی sudo باشد و یک فایروال فعال داشته باشد. برای راهنمایی در مورد تنظیم این موارد، میتوانید توزیع خود را از این فهرست انتخاب کرده و دستورالعملهای راهانداری اولیه سرور را دنبال کنید، لطفا اطمینان حاصل کنید که از نسخه پشتیبانی Ubuntu استفاده میکنید.
- اجرای دستور زیر در ترمینال Ubuntu برای بهروزرسانی لیست پکیج ها و دریافت آخرین نسخهها و بهروزرسانیهای امنیتی نرمافزار های موجود در مخازن
sudo apt-get update
.
بیشتر بدانید: نحوه راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu
مطالب پیشنهادی: API چیست؟

راه اندازی محیط پایتون
Ubuntu 24.04 به صورت پیش فرض همراه با Python 3 ارائه میشود. برای اطمینان از نصب آن، ترمینال را باز کرده و دستور زیر را اجرا کنید.
python3 --version
اگر Python 3 را قبلا روی سیستم نصب شده باشد، این دستور نسخه فعلی را آن را نمایش میدهد. در صورتی که نصب نشده باشد. میتوانید با اجرای دستور زیر آن را نصب کنید.
sudo apt install python3
پس از نصب Python 3 باید pip (مدیریت بستههای پایتون) و بسته های توسعهای مرتبط را روی سیستم خود نصب کنید. برای این کار، دستر زیر را در ترمینال اجرا کنید.
sudo apt install python3-pip python3-dev
در این مطلب، از PostgreSQL به عنوان پایگاه داده رابطهای استفاده شده است. برای برقراری ارتباط با PostgreSQL، باید بسته libpq-dev
را نصب کنید. دستور زیر را اجرا کنید.
sudo apt install libpq-dev
ایجاد و فعال سازی محیط مجازی
نکته: اگر از نسخهای کمتر از Ubuntu 24.04 استفاده میکنید، نیازی به ایجاد محیط مجازی ندارید و میتوانید به مرحله بعد بروید.
برای جداسازی بسته های Python از محیط اصلی سیستم، باید یک محیط مجازی (Virtual Environment) ایجاد کنید. برای این کار، ابتدا به دایرکتوری کاری خود بروید و سپس دستور زیر را اجرا کنید.
python3 -m venv fastapi-env
این دستور یک محیط مجازی جدید در پوشهای به نام fastapi-env ایجاد میکند، محیط مجازی مجموعه ای اختصاصی از بستههای پایتون خواهد داشت که سایر پروژههها و محیط اصلی سیستم جدا شدهاند.
برای اطمینان از اینکه تمام بسته هایی که از این مرحله به بعد نصب میکنید، داخل محیط مجازی نصب شوند، باید آن را فعال کنید. برای فعال سازی، دستور زیر را اجرا کنید.
source fastapi-env/bin/activate
پس از اجرای این دستور، متوجه خواهید شد که نام محصول در ابتدای خط فرمان نمایش داده میشود.
خروجی:
(fastapi-env) ubuntu@user:
نصب و راه اندازی PostgreSQL
در این مرحله، باید PostgreSQL (یا هر پایگاه داده رابطهای دیگری که میخواهید) را روی سیستم خود نصب کنید. برای نصب، دستور زیر را اجرا کنید.
sudo apt install postgresql postgresql-contrib
پس از نصب، سرویس PostgreSQL را راهاندازی و فعال کنید.
sudo systemctl start postgresql
sudo systemctl enable postgresql
با اجرای
sudo systemctl status postgresql
می توانید وضعیت سرویس PostgreSQL را بررسی کنید. پس از فعال شدن سرویس، به طور خودکار در بوت سیستم راه اندازی می شود.
برای کار با PostgreSQL در FastAPI، باید چندین کتابخانه را نصب کنید.
- asyncpg: یک درایور آسنکرون برای PostgreSQL که به FastAPI امکان تعامل با این پایگاه داده را میدهد.
- SQLAlchemy: یک ابزار ORM که به شما کمک میکند تا به جای نوشتن SQL خام، از کد پایتون برای مدیریت پایگاه داده استفاده کنید.
- databases: یک کتابخانه برای انجام عملیات آسنکرون که برای کارکرد SQLAlchemy با FastAPI ضروری است.
برای نصب این ابزارها، دستور زیر را اجرا کنید.
pip install asyncpg sqlalchemy databases
سپس یک پایگاه داده و یک کاربر جدید با دسترسی های لازم ایجاد کنید.
sudo -u postgres psql
CREATE DATABASE ;
CREATE ROLE WITH PASSWORD '';
GRANT ALL PRIVILEGES ON DATABASE TO ;
exit
از هاست ابری PostgreSQL لیارا استفاده کنید و پایگاه داده خود را بدون دردسر مدیریت کنید!
ایجاد یک برنامه نمونه پایتون
برای دسترسی به پایگاه داده از طریق FastAPI، به یک برنامه پایتون اجرایی نیاز دارید. اگر هنوز چنین برنامهای ندارید، میتوانید با انجام مراحل زیر یک برنامه ساده ایجاد کنید.
ابتدا یک فایل جدید به نام postgres_db.py
در دایرکتوری پروژه ایجاد کنید.
nano postgres_db.py

در ویرایشگر متن، کد زیر را بنویسید که اتصال به پایگاه داده PostgreSQL را برقرار کرده و یک جدول books
ایجاد میکند. این کد از بسته databases
برای اتصال به پایگاه داده و از SQLAlchemy
برای تعریف ساختار جدول استفاده میکند.
from databases import Database
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Float
DB_URL = "postgresql://username:password@localhost/user_db"
database = Database(DB_URL)
metadata = MetaData()
books = Table (
"books",
metadata,
Column("id", Integer, primary_key=True, index=True),
Column("title", String, index=True),
Column("author", String, index=True),
Column("price", Float),
)
engine = create_engine(DB_URL)
metadata.create_all(engine)
فایل را ذخیره کرده و ببندید.
یک فایل جدید به نام main.py
در همان دایرکتوری ایجاد کنید.
nano main.py
در این فایل منطق اصلی برنامه را بنویسید.
from fastapi import FastAPI
from typing import List
from pydantic import BaseModel
from postgres_db import books, database
app = FastAPI()
class BookCreate(BaseModel):
title: str
author: str
price: float
class BookResponse(BaseModel):
id: int
title: str
author: str
price: float
class Config:
orm_mode=True
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
@app.post("/books/", response_model=BookResponse)
async def create_book(book: BookCreate):
query = books.insert().values(title=book.title, author=book.author, price=book.price)
last_book_id = await database.execute(query)
query = books.select().where(books.c.id == last_book_id)
inserted_book = await database.fetch_one(query)
return inserted_book
@app.get("/books/", response_model=List[BookResponse])
async def get_books():
query = books.select()
return await database.fetch_all(query)
این کد از FastAPI برای افزودن کتابهای جدید به پایگاه داده PostgreSQL و بازیابی فهرست کتاب ها استفاده میکند.
همچنین بخوانید: PostgreSQL چیست؟
نصب کتابخانه های مورد نیاز
در برنامه پایتون خود، از کتابخانه ها و بسته های مختلفی استفاده کردهاید، قبل از اجرای برنامه، اطمینان حاصل کنید که کتابخانه های مورد نیاز را نصب کردهاید.
pip install fastapi uvicorn psycopg2
اجرای برنامه پایتون
اکنون زمان اجرای برنامهای است که ایجاد کردهاید.
برای اجرای برنامه، دستور زیر را اجرا کنید.
uvicorn main:app --reload
Uvicorn
یک سرور ASGI (Asynchronous Server Gateway Interface) است که برای اجرای برنامه های FastAPI استفاده میشود. از آنجایی که FastAPI یک فریمورک وب آسنکرون است. استفاده از Uvicorn
روش پیشنهادی برای اجرای آن محسوب میشود.
اگر دستاور بالا بدون خطا اجرا شود، خروجی مشابه زیر را مشاهده خواهید کرد.
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 [XXXX] using StatReload
INFO: Started server process [YYYY]
INFO: Waiting for application startup.
INFO: Application startup complete.
اکنون میتوانید با مراجعه به http://127.0.0.1:8000
در مرورگر، خروجی درخواست های خود را مشاهده کنید.
از هاست ابری Python لیارا استفاده کنید و API خود را بدون دردسر اجرا کنید!
تست کردن Endpoint ها (اختیاری)
میتوانید اندپوینتهای (endpoints) تعریف شده در فایل main.py
(یعنی POST
و GET
) را با ارسال درخواست های HTTP به سروری که در http://127.0.0.1:8000
اجرا شده است، آزمایش کنید.
برای ارسال یک درخواست POST
، میتوانید دادهای مشابه نمونه زیر ارسال کنید.
{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"price": 10.99
}
همچنین میتوانید یک درخواست GET
به همان سرور ارسال کنید تا لیست کتابهای موجود را در پایگاه داده PostgreSQL را دریافت کنید.

همینطور بخوانید: نحوه ایجاد یک API REST با Flask در سرور مجازی اوبونتو Ubuntu
جمع بندی
در این مطلب، مراحل راهاندازی یک برنامه FastAPI ساده که با پایگاه داده PostgreSQL تعامل دارد بررسی شده است. این مراحل به ویژه برای برنامههای هوش مصنوعی نیز مفید است، به خصوص زمانی که نیاز به ایجاد یک وب API برای ارتباط با مدلهای هوش مصنوعی یا مدیریت دادههای مرتبط با فرآیند های هوش مصنوعی خود دارید.
با این پایهگذاری، اکنون میتوانید پروژه های FastAPI خود را توسعه داده و گسترش دهید.