כיצד להשתמש ב-Fast API עם מסד נתונים רלציוני על Ubuntu

הקדם

FastAPI מאוד מתפקד כשירת רשת גבוהה ביצועים וקלה לשימוש עבור בניית API בעזרת הפיתוח בפיתוח הפיתוח בפיתוח Python. כשהוא מקבל צוותה עם בסיס נתונים יחסי, FastAPI יכול להיות משמש ליצירת יישומים חזקים ומסוגלים להתארך. הדרכה הזו תסיע אתכם דרך תהליך הקימה של יישום FastAPI עם בסיס נתונים יחסי על מכונת Ubuntu 24.04. אנחנו נעבור על הכל, מהתקנת הכלים הנחוצים להגדרת הבסיס הנתונים ויצירת נקודות הסיום של ה API.

השתמשות ב FastAPI עם בסיס נתונים PostgreSQL

דרישות קדם

לפני שתעבדו בהדרכה הזו, אתה צריך:

  • שרת פועל של Ubuntu ביחד עם משתמש לא שורשים עם זכויות sudo ומחסום כבד פעיל. עבור הוראות על איך להגדיר את זה, בבקשה בחר את החלון המתאים למערכת שלך מרשימת זאת ועידן השיטה הראשונית של השרת. אנא ודא שתעבדו עם הגירסה המתמשכת של Ubuntu.

  • מודעות לשוני הפעולה בלינוקס. עבור התחלה או הרעיון מחדש לשוני הפעולה, תוכלו לבקר במדריך זה על מקצב בסיסי של שוני הפעולה בלינוקס.

  • בואו בשרת Ubuntu ובקש sudo apt-get update כדי לוודא שלמערכת יש את הגרסאות העדכניות והעדכניות הבטיחות לתוך התוכנה הזמינה מהאגרות המוגדרות על המערכת שלך.

אותם ההוראות האלה מוצעות לגבי הגירסאות העדכניות ביותר של Ubuntu: Ubuntu 24.04, Ubuntu 22.04 ו Ubuntu 20.04. אם אתה משתמש בגירסא של Ubuntu <= 18.04, אנחנו ממליצים לך לעדכן לגירסה יותר חדשה מפני שUbuntu אינו מספק תמיכה עוד לגירסאות אלה. אוסף הדרכים הזה יעזר לך בעדכון הגירסה של ה Ubuntu שלך.

שלב 1 – הגדרת סביבת Python

Ubuntu 24.04 מופעל על ידי מצב באופן ברזל Python 3. פתח את ה terminal ובואו על הפעם עם הפקודה הבאה כדי לבדוק את התקנת Python 3:

python3 --version

אם Python 3 כבר מותקן על המחשב שלך, הפקודה הזו תחזיר את הגירסה הנוכחית של התקנת Python 3. במקרה שהוא לא מותקן, תוכל להריץ את הפקודה הבאה ולקבל את התקנת Python 3:

sudo apt install python3

בהמשך, עליך להתקין את המשיכה pip והמשיכה dev על המערכת שלך. בוא על הפעם עם הפקודה הבאה ב terminal:

sudo apt install python3-pip python3-dev

בהדרכה זו, אנחנו נשתמש בPostgreSQL כבסיס נתונים רלאונלי. כדי להתחבר לבסיס נתונים PostgreSQL, צריך להתקין libpq-dev באמצעות הפקודה הבאה:

sudo apt install libpq-dev

שלב 2 – יצירת והפעלת סביבה מדמה

אם אתה משתמש בUbuntu בגירסה < 24.04, לא צריך ליצור סביבה מדמה. תוכל להתעלם מהשלב הבא הבא.

השלב הבא הוא ליצור סביבה מדמה בתוך התקנתך של Ubuntu כדי להפריד את האפליקציות Python מהסביבה המקומית שלך. כדי לעשות זאת, הלכי לתוך המפתח העבודה שלך והרי את הפקודות הבאות:

python3 -m venv fastapi-env

הפקודה הזו תיצור סביבה מדמה חדשה במחלקה שנקראת fastapi-env. היא תהיה עם מערך מוגדר משלה של פקידים Python, מבודדים מפרויקטים אחרים.

כדי לוודא שהפקידים שתעלה מהרגע הזה יותקנו בתוך הסביבה המדמה הזו, תצטרכה להפעיל אותה בעזרת הפקודה הבאה:

source fastapi-env/bin/activate

בהיגשה, תוכל להבחין בטרמינל עם סימן קדם על השם של הסביבה המדמה שלך כך:

Output
(fastapi-env) ubuntu@user:

שלב 3 – התקנת PostgreSQL

השלב הבא הוא התקנת PostgreSQL (או את הבסיס המידעי המועדף עליך).

sudo apt install postgresql postgresql-contrib

עכשיו, הגיע הזמן להתחיל ולאפשר את שירות הPostgreSQL בתוך הסביבה הוירטואלית שלך.

sudo systemctl start postgresql
sudo systemctl enable postgresql

ניתן לבדוק את מצב שירות הPostgreSQL על-ידי ריציינדינג את sudo systemctl status postgresql. אחרי שהשירות יועלה, הוא מתחיל באופן אוטומטי בהתחלה המערכת.

כדי להתקין ולהשתמש בPostgreSQL בקשר לFastAPI, צריך להתקין כמה דברים:

  1. asyncpg: זה נתב הניהול האסינכרוני של PostgreSQL שמאפשר לFastAPI לתקשר עם בסיס המידע PostgreSQL.
  2. SQLAlchemy: זה כלי עיצוב רשתות (ORM) שעוזר לך לנהל סקימות ושאילות בבסיס המידע בעזרת קוד פינגווין במקום כתיבת SQL בעצם.
  3. databases: זה ספריה לנתבים באקסיום הנדרשת על ידי SQLAlchemy כדי לפעול באופן אסינכרוני עם FastAPI.

כדי להתקין את אלה, ניתן לבצע את הפקודה המאוחתת הבאה:

pip install asyncpg sqlalchemy databases

בהמשך, ניצור בסיס מידע Postgres ומשתמש עם הזכויות הדרושות.

sudo -u postgres psql
CREATE DATABASE <user_db>;
CREATE ROLE <username> WITH PASSWORD '<password>';
GRANT ALL PRIVILEGES ON DATABASE <user_db> TO <username>;
exit

שלב 4 – יצירת יישומה פיינגווין דוגמה

אתה צריך יישומה פייתון פיתוח פיתוח שתגיע אל הבסיס המידעי שלך דרך FastAPI. אם אין לך יישומה פייתון פעילה, אתה יכול ליצור אחת בקצב ראשון על ידי הבאות הצעדים:

יצירה של קובץ מקורי Python בשם postgres_db.py בתוך המיזם שלך.

nano postgres_db.py

במערכת העיתונים, תכתב הגיונך כדי ליצור קישור בסיס מידע וליצור טבלה בתוך הבסיס המידעי. במקרה זה, אנחנו יוצרים קישור בסיס מידע PostgreSQL בעזרת החברה databases ומגדירים את המבנה של טבלת books בעזרת 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 ולשלוט באוסף הספרים ממנו.

שלב 5 – התקנת ספרי הידעה הדרושים

ביישומך הפייתון, אתה מגיע אל כל מיני ספרי ידעה וחביות. לפני שירות היישום, ודא שתשתמש בספרי הידעה הדרושים.

pip install fastapi uvicorn psycopg2

שלב 6 – הפעלת יישומה הפייתון

עכשיו, הזמן לבצע את היישום שנוצר.

uvicorn main:app --reload

uvicorn הוא ממשק מנף של עמוד שרת אסינכרוני (ASGI) שמשתמש בו לשרת יישומות FastAPI. שימוש בuvicorn הוא דרך מועדפת לבצע יישום FastAPI מפני שFastAPI הוא מערך גרף אסינכרוני בעצמו.

אם הפקודה העליונה מובצעת ללא שגיאה, אתה תראה יוצאת דומה לדוגמה הבאה:

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 [XXXX] using StatReload INFO: Started server process [YYYY] INFO: Waiting for application startup. INFO: Application startup complete.

בדפדפן האינטרנט, ניווט לhttp://127.0.0.1:8000 כדי לראות את התוצאות של השאלה.

שלב 7 [אופציונלי] – בדיקת הנקודות

אתה יכול לבדוק את הנקודות המוגדרות בmain.py שלך (למשל, POST וGET) על-ידי שליחת בקשות HTTP אל השרת שמפעיל על http://127.0.0.1:8000.

{
  "title": "The Great Gatsby",
  "author": "F. Scott Fitzgerald",
  "price": 10.99
}

באופן דומה, תוכל לבצע קריאה GET אל אותו שרת כדי לשאת את רשימת הספרים הנמצאים בבסיס המידע Postgres שלך.

סיכום

בהדרכה זו, צעדתם דרך התהליך של הגדרת יישומון פשוט של FastAPI המתעסק עם בסיס נתונים PostgreSQL. השלבים האלה מועילים גם ליישומות AI, במיוחד כשצריך לבנות את הרשת האינטראקטיבית שלך על מנת לתקשר עם המודלים שלך או לנהל מידע קשור לתהליכים הAI שלך. עם היסוד הזה במקום, עכשיו תוכל לבנות ולהרחיב את הפרוייקטים שלך בFastAPI.

הבאו לאחר יותר מאמרים על איך לעבד עם FastAPI.

Source:
https://www.digitalocean.com/community/tutorials/use-fastapi-with-relationaldb-ubuntu