كيفية استخدام Fast API مع قاعدة بيانات علائقية على Ubuntu

مقدمة

أسس FastAPI تم ترويجها بسرعة كاملة كواجه وبرمجية إنترنت ذات أداء عالٍ وسهل الاستخدام لبناء أبلياء بيانات بواسطة البرمجية التي تمكننا من بناء تطبيقات قوية وقابلة للتنمية عند تزاماً مع قاعدة بيانات تعابر. سوف نقوم في هذه الدراسة بتوجيهكم خلال عملية إنشاء تطبيق FastAPI مع قاعدة بيانات تعابر في حاسب Ubuntu 24.04. سوف نقوم بتغطية كل ما يتضمن التثبيت للأدوات الضرورية وتكوين القاعدة وإنشاء نقاط النهاية الخاصة بال API.

使用 FastAPI 与 PostgreSQL 数据库

المقابلات الأولية

قبل التفقد إلى الخطوات في هذا التوريتال، يحتاجون إلى:

  • مخزن يعمل على Ubuntu ومستخدم غير رئيسي بتمويلات sudo وجهاز حماية النظام مفعل. لمساعدة في تأسيس هذا الإطار، يرجى اختيار توزيعكم من هذه القائمة وتتبع وصفات إنشاء الخوادم الأولية. يتم تأكد من أنك تعمل بنسخة مدعومة من Ubuntu.

  • الإلمام بسطر أوامر Linux. للحصول على مقدمة أو تجديد المعلومات حول سطر الأوامر، يمكنك زيارة هذا الدليل على مقدمة سطر أوامر Linux.

  • قم بتشغيل sudo apt-get update في محطة Ubuntu للتأكد من أن نظامك يحتوي على أحدث الإصدارات وتحديثات الأمان للبرامج المتاحة من المستودعات التي تم تكوينها على نظامك.

تلك التعليمات مفروضة على أحدث إصدارات Ubuntu: Ubuntu 24.04 و Ubuntu 22.04 و Ubuntu 20.04. إذا كنت تستخدم إصدار Ubuntu <= 18.04، نوعاً ما نوصي بترقية إلى إصدار أحدث لأن Ubuntu لم يعد يقدم دعم لهذه الإصدارات. هذا المجموعة من الوصفات ستساعدك في ترقية إصدارك ل Ubuntu.

خطوة 1 – تأسيس بيئة Python

Ubuntu 24.04 يشترك ب Python 3 بشكل تلقائي. افتح المستودع وأراء الأمر التالي لتحقق من تثبيت Python 3:

python3 --version

إذا كانت Python 3 متوفرة بالحاسوب الخاص بك، ستعود هذا الأمر على إصدار التثبيت الحالي ل Python 3. في حالة عدم وجودها، يمكنك أن ترفع الأمر التالي وتحصل على تثبيت Python 3:

sudo apt install python3

من ثم، يتوجب عليك تثبيت المثبتين pip و dev على نظامك. انطلق بالأمر التالي في المستودع:

sudo apt install python3-pip python3-dev

في هذا التوريتال، سنستخدم PostgreSQL كقاعدة بيانات تعاونية. للتفاعل مع قاعدة البيانات PostgreSQL، يتوجب عليك تثبيت libpq-dev بواسطة الأوامر التالية:

sudo apt install libpq-dev

خطوة 2 – إنشاء وتفعيل البيئة الافتراضية

إذا كنت تستخدم Ubuntu النسخة < 24.04، لن يتوجب عليك إنشاء بيئة افتراضية. يمكنك التقدم إلى الخطوة التالية.

الخطوة التالية هي إنشاء بيئة افتراضية داخل تثبيتك الخاص للإنشاء لتمايز المجموعات البيانية من بيئتك السيستم. للقيام بهذا، أذهب إلى ديركتوريكك تعمل وأجري قوام الأوامر التالية:

python3 -m venv fastapi-env

هذا الأمر سيتم إنشاء بيئة افتراضية جديدة في ديركتوري تدعى fastapi-env. سيكون لها مجموعة من المجموعات البيانية الخاصة بها، معزولة عن المشاريع الأخرى.

لضمان أن المجموعات التي تنصمم من هذه اللحظة وهل تم تثبيتها داخل هذه البيئة الافتراضية، يتوجب عليك تفعيلها بواسطة الأوامر التالية:

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، يجب أن تن Instal a couple of things:

  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 – إنشاء تطبيق Python مثالي

يحتاج لك تطبيق بينات Python تتمكن من تواصل مع قاعدة البيانات الخاصة بك عبر FastAPI. إذا لم يكن لديك تطبيق Python في حالة تشغيل يمكنك إنشاؤه بسرعة عن طريق تلك الخطوات:

أنشئ ملف 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 – Instale bibliotecas necesarias

في تطبيقك البينات الخاص تتم مراجعة لمختلف المكتبات والحزم. قبل تشغيل التطبيق ، تأكد من تثبيت المكتبات المطلوبة.

pip install fastapi uvicorn psycopg2

خطوة 6 – Ejecutar aplicación de Python

الآن، وقت القيام بتشغيل تطبيق الذي أنشأته.

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) بإرسال solicitudes HTTP إلى الخوادم التي تعمل على http://127.0.0.1:8000.

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

بشكل مماثل، يمكنك إجراء مكالمة GET إلى نفس المزيد من الخوادم لجلب قائمة بالكتب الموجودة في قاعدة بيانات Postgres الخاصة بك.

ختام

في هذا التورية، تمررت خلال عملية إنشاء تطبيق FastAPI بسيط يتفاعل مع قاعدة بيانات PostgreSQL. هذه الخطوات مفيدة أيضًا للتطبيقات التي تتمتع بالذكاء، خاصة عندما تحتاج إلى بناء وبيانات وفير للتواصل مع نماذجك التي تتمتع بالذكاء أو إدارة البيانات المتعلقة بعملياتك التي تتمتع بالذكاء. مع هذا القاعدة الأساسية، يمكنك الآن بناء وتوسيع مشاريعك الFastAPI.

أنتظروا لمقالات أكثر حول كيفية العمل مع FastAPI.

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