FireO – ORM لجوجل Firestore في بايثون: دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Google Firestore — هي قاعدة بيانات NoSQL سحابية من Firebase، مصممة لتخزين مستندات JSON. وهي مثالية للتطبيقات القابلة للتوسع والتي تعمل في الوقت الفعلي. ومع ذلك، فإن العمل مع Firestore مباشرة عبر google-cloud-firestore ليس دائمًا مريحًا، خاصة إذا كنت معتادًا على النهج الكائني والكود المقيد الأنواع.

FireO – ORM لجوجل Firestore — هي مكتبة بايثون تبسط العمل مع Firestore من خلال توفير واجهة مشابهة لـ ORMs الشهيرة. النماذج، الحقول، التحقق، والعلاقات — كل هذا أصبح متاحًا الآن في عالم Firebase.

ما هو FireO ولماذا يجب استخدامه

FireO (Firebase ORM) — هو تعيين كائني-علائقي لجوجل Firestore، مكتوب بلغة بايثون. تتيح المكتبة للمطورين التعامل مع Firestore كما لو كانت قاعدة بيانات علائقية تقليدية، باستخدام الكلاسات والكائنات بدلاً من الاستعلامات المباشرة لواجهة API.

المزايا الرئيسية لـ FireO:

  • سهولة الاستخدام: بناء جملة بديهي مشابه لـ Django ORM
  • تحديد أنواع الحقول: تحديد صارم للأنواع مع تحقق تلقائي
  • التحقق من البيانات: فحص مدمج للبيانات قبل الحفظ
  • دعم العلاقات: العمل مع حقول المرجع والهياكل المتداخلة
  • إدارة تلقائية للبيانات الوصفية: إنشاء تلقائي للطوابع الزمنية
  • الترحيل: إدارة مبسطة لهيكل البيانات

تثبيت وإعداد FireO

تثبيت المكتبة

pip install fireo

إعداد المصادقة

للعمل مع Firestore، يجب إعداد المصادقة عبر حساب الخدمة (Service Account):

  1. أنشئ حساب خدمة في Firebase Console
  2. حمّل مفتاح JSON
  3. حدد المسار إلى المفتاح في متغير البيئة:
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your-key.json"

طريقة بديلة لإعداد الاتصال

from fireo import connection

# الاتصال عبر ملف
connection(from_file="path/to/serviceAccountKey.json")

# الاتصال عبر متغير البيئة
connection()

أساسيات Firestore ونموذج المستندات

هيكل البيانات في Firestore

يخزن Firestore البيانات في التسلسل الهرمي التالي:

  • قاعدة البيانات → المجموعات → المستندات → الحقول
  • المستندات يمكن أن تحتوي على مجموعات فرعية
  • الحقول يمكن أن تكون من أنواع مختلفة: نصوص، أرقام، مصفوفات، كائنات، إلخ.

خصائص نهج NoSQL

Firestore هي قاعدة بيانات بدون مخطط (schemaless)، مما يعني:

  • المستندات في نفس المجموعة يمكن أن تحتوي على حقول مختلفة
  • لا حاجة لتحديد الهيكل مسبقًا
  • مرونة في تغيير هيكل البيانات

يضيف FireO طبقة من الهيكل والتحقق فوق هذه المرونة.

إنشاء النماذج في FireO

نموذج أساسي

from fireo.models import Model
from fireo.fields import TextField, NumberField, BooleanField

class User(Model):
    name = TextField(required=True, max_length=100)
    age = NumberField(required=True)
    is_active = BooleanField(default=True)
    
    class Meta:
        collection_name = "users"  # اختياري، افتراضيًا يتم استخدام اسم الكلاس

نموذج متقدم مع التحقق

from fireo.fields import EmailField, DateTimeField, ListField
from datetime import datetime

class Profile(Model):
    user_id = TextField(required=True)
    email = EmailField(required=True)
    created_at = DateTimeField(default=datetime.now)
    tags = ListField                    

توصيات