مقدمة
التعامل مع قواعد البيانات هو جزء أساسي من أي تطبيق حديث. في Python، هناك العديد من مكتبات ORM التي تسهل التفاعل مع قواعد SQL. من بينها، تعتبر Peewee واحدة من أبسط وأخف المكتبات. إنها مثالية للمشاريع الصغيرة، والبرامج النصية، وحتى الخدمات المصغرة.
Peewee – ORM خفيفة تقدم كل ما تحتاجه لوصف النماذج، وتنفيذ الاستعلامات، والتعامل مع المعاملات، والتكامل مع أطر الويب — مع سهولة التعلم والتنفيذ.
مبادئ عمل ORM ومكانة Peewee
ما هو ORM
ORM (Object-Relational Mapping) هي تقنية تتيح لك التعامل مع قواعد البيانات من خلال كائنات لغة البرمجة. بدلاً من كتابة استعلامات SQL، تقوم بإنشاء والتفاعل مع كلاسات Python، ويقوم ORM بتحويل ذلك إلى SQL.
يوفر ORM طبقة تجريد فوق SQL، مما يجعل الكود أكثر قابلية للقراءة وأقل عرضة للأخطاء. الفوائد الرئيسية لاستخدام ORM:
- إنشاء استعلامات SQL تلقائياً
- الحماية من هجمات SQL injection
- قابلية النقل بين أنظمة قواعد البيانات المختلفة
- سهولة التعامل مع كائنات Python
متى تختار Peewee
Peewee — خيار ممتاز في الحالات التالية:
- إذا كنت بحاجة إلى أداة بسيطة وخفيفة
- إذا كان المشروع صغيراً أو تجريبياً
- إذا كانت سرعة التطوير مهمة بدون إعدادات معقدة
- للنماذج الأولية وتطبيقات الويب الصغيرة
- لتطبيقات سطح المكتب بقاعدة بيانات محلية
التثبيت والإعداد الأساسي
تثبيت Peewee
يمكن تثبيت Peewee عبر pip:
pip install peewee
للعمل مع أنظمة قواعد بيانات مختلفة، ستحتاج إلى حزم إضافية:
# لـ PostgreSQL
pip install psycopg2-binary
# لـ MySQL
pip install PyMySQL
# لـ SQLite (مضمنة في Python)
# لا حاجة لحزم إضافية
الاتصال بقاعدة البيانات
يدعم Peewee عدة أنواع من قواعد البيانات:
from peewee import SqliteDatabase, PostgresqlDatabase, MySQLDatabase
# SQLite
db = SqliteDatabase('my_database.db')
# PostgreSQL
db = PostgresqlDatabase('mydb', user='username', password='password', host='localhost', port=5432)
# MySQL
db = MySQLDatabase('mydb', user='username', password='password', host='localhost', port=3306)
إنشاء نماذج البيانات
النموذج الأساسي
from peewee import Model, CharField, DateField, IntegerField, TextField
class BaseModel(Model):
class Meta:
database = db
class Author(BaseModel):
name = CharField(max_length=100)
birth_date = DateField()
bio = TextField(null=True)
class Book(BaseModel):
title = CharField(max_length=200)
isbn = CharField(max_length=13, unique=True)
pages = IntegerField()
publication_year = IntegerField()
author = ForeignKeyField(Author, backref='books')
إنشاء الجداول
db.connect()
db.create_tables([Author, Book])
أنواع الحقول في Peewee
أنواع الحقول الأساسية
| نوع الحقل | الوصف | المعلمات |
|---|---|---|
| CharField | نص بطول محدد | max_length, unique, null |
| TextField | نص بدون حد للطول | null |
| IntegerField | عدد صحيح | null, unique |
| FloatField | عدد عشري | null, unique |
| BooleanField | قيمة منطقية | null, default |
| DateField | تاريخ | null, default |
| DateTimeField | تاريخ ووقت |