تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

استفاده از 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 چیست؟

استفاده از Fast API با دیتابیس رابطه ای در سرور مجازی اوبونتو Ubuntu

راه اندازی محیط پایتون

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 خود را توسعه داده و گسترش دهید.