Psycopg2: مشغل PostgreSQL الأفضل لتطبيقات بايثون

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

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

ابدأ الدورة

Psycopg2: الدليل الشامل للعمل مع PostgreSQL في بايثون

مقدمة

PostgreSQL هي نظام إدارة قواعد بيانات علائقية قوي ومفتوح المصدر، تشتهر بموثوقيتها وقابليتها للتوسع ودعمها لأنواع البيانات المعقدة. للعمل مع PostgreSQL من بايثون، تُعد Psycopg2 الأداة الأكثر شيوعًا وموثوقية، وهي المشغل الرسمي المتزامن الذي يوفر حلاً مستقرًا وعالي الأداء للاتصال بقاعدة البيانات، وتنفيذ استعلامات SQL، وإدارة المعاملات، والتكامل مع أطر الويب.

تُعتبر Psycopg2 المعيار الفعلي للعمل مع PostgreSQL في مشاريع بايثون بفضل نضجها واكتمال وظائفها والدعم النشط من مجتمع المطورين.

ما هي Psycopg2

Psycopg2 هي محول بايثون لـ PostgreSQL، مكتوبة بلغة C باستخدام libpq (مكتبة العميل الرسمية لـ PostgreSQL). توفر المكتبة توافقًا كاملاً مع مواصفات DB-API 2.0 وتقدم العديد من الميزات الإضافية الخاصة بـ PostgreSQL.

الميزات الرئيسية لـ Psycopg2:

  • أداء عالٍ: بفضل التنفيذ بلغة C والتفاعل المحسّن مع libpq
  • أمان: حماية مدمجة ضد حقن SQL عبر الاستعلامات المُعلمة
  • دعم المعاملات: تحكم كامل في المعاملات مع إمكانية الإدارة التلقائية
  • التوافق مع أنواع البيانات: تحويل تلقائي بين أنواع PostgreSQL وPython
  • دعم الامتدادات: العمل مع JSON، UUID، المصفوفات، hstore وأنواع بيانات PostgreSQL الأخرى
  • أمان الخيوط: إمكانية الاستخدام في التطبيقات متعددة الخيوط

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

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

pip install psycopg2-binary

لبيئة الإنتاج، يُوصى باستخدام النسخة الكاملة:

pip install psycopg2

المتطلبات النظامية

قبل التثبيت، تأكد من تثبيت التبعيات اللازمة على النظام:

Ubuntu/Debian:

sudo apt-get install libpq-dev python3-dev

CentOS/RHEL:

sudo yum install postgresql-devel python3-devel

macOS:

brew install postgresql

الاتصال بقاعدة البيانات

الاتصال الأساسي

import psycopg2

# الاتصال بـ PostgreSQL
conn = psycopg2.connect(
    dbname="mydb",
    user="postgres", 
    password="password",
    host="localhost",
    port="5432"
)

# إنشاء مؤشر
cur = conn.cursor()

الاتصال عبر سلسلة الاتصال

conn = psycopg2.connect("postgresql://user:password@localhost:5432/dbname")

الاتصال مع معاملات إضافية

conn = psycopg2.connect(
    dbname="mydb",
    user="postgres",
    password="password",
    host="localhost",
    port="5432",
    sslmode="require",
    connect_timeout=10,
    application_name="my_app"
)

استخدام مديري السياق

import psycopg2
from contextlib import contextmanager

@contextmanager
def get_db_connection():
    conn = psycopg2.connect(
        dbname="mydb",
        user="postgres",
        password="password",
        host="localhost"
    )
    try:
        yield conn
    finally:
        conn.close()

# الاستخدام
with get_db_connection() as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM users")
        results = cur.fetchal                    

توصيات