حل مشكلة psycopg2: خطأ SSL عند الاتصال بقاعدة بيانات PostgreSQL
عندما تواجه تحديات في الاتصال بقاعدة البيانات الخاصة بك باستخدام مكتبة psycopg2 في Python، قد تكون هناك عدة عوامل تحتاج إلى النظر. في هذه الحالة، يظهر لديك خطأ يشير إلى أن دعم SSL غير مضمن في psycopg2، وهذا يمكن أن يكون ناتجًا عن تكوين غير صحيح للبيئة الخاصة بك.
لتوضيح، يجدر بنا النظر في بيئة نظام التشغيل الخاصة بك، حيث يبدو أنك تستخدم Mac OS X El Capitan. قد تكون هناك تداخلات بين إصدار Python المثبت عبر Homebrew والإصدار الذي يأتي مع نظام التشغيل.
-
كيفية تصحيح استثناء HTTP Status 50015/03/2024
-
تكامل PhoneGap: التقاط صورة أمامية بشكل آلي09/02/2024
-
تعطيل سحب شريط الإشعارات في تطبيق Android02/03/2024
أولاً، يفضل التحقق من إصدار Python الذي يستخدمه النظام الخاص بك والتأكد من أنك تستخدم الإصدار الصحيح. يمكنك القيام بذلك عبر الأمر:
bashpython --version
قد تحتاج أيضًا إلى التحقق من إصدار Python الذي تستخدمه في السكربت الخاص بك، والتأكد من أن هناك تناغم بين الإصدارين.
ثم، يمكنك محاولة تنفيذ الخطوات التالية:
- قم بتحديث إصدار Python الخاص بك عبر Homebrew:
bashbrew update brew upgrade python
- قم بتثبيت psycopg2 مع دعم SSL:
bashpip uninstall psycopg2
brew install openssl
LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include" pip install psycopg2
-
قم بتحديث سطح المكتب الخاص بك للتأكد من أنك تستخدم الإصدار الصحيح من Python.
-
قم بتشغيل السكربت مرة أخرى وتحقق مما إذا كان الخطأ قد تم حله.
إذا استمرت المشكلة، يمكن أن يكون هناك تداخل بين نسخ Python المختلفة. يمكنك استخدام بيئات افتراضية باستخدام virtualenv
لتفادي مشاكل التداخل بين الإصدارات.
المزيد من المعلومات
بالطبع، دعنا نتعمق أكثر في بعض النقاط لتوفير إرشادات دقيقة وشاملة لحل المشكلة.
أولاً وقبل أي شيء آخر، يجب عليك التأكد من أنك تعمل في بيئة افتراضية مستقلة باستخدام virtualenv
لتجنب تداخل الحزم والمتغيرات بين مشاريعك. يمكنك إنشاء بيئة افتراضية باستخدام الأوامر التالية:
bash# تثبيت virtualenv إذا لم يكن مثبتًا بالفعل
pip install virtualenv
# إنشاء بيئة افتراضية
virtualenv venv
# تنشيط البيئة الافتراضية
source venv/bin/activate
بعد تنشيط البيئة الافتراضية، يمكنك تثبيت psycopg2
مع دعم SSL بناءً على OpenSSL المثبت عبر Homebrew بناءً على التوجيهات السابقة.
ثانيًا، يفضل أن تتأكد من أنك تستخدم الإصدار الصحيح من pip
. في بعض الأحيان، يكون هناك خلل في تحديث pip
بناءً على النسخة الحالية لديك. يمكنك تحديث pip
باستخدام الأمر التالي:
bashpip install --upgrade pip
ثالثًا، يمكنك التحقق من تكوين OpenSSL الذي يستخدمه Python. يمكنك القيام بذلك عبر الأمر:
bashpython -c "import ssl; print(ssl.OPENSSL_VERSION)"
تأكد من أن الإصدار المطابق مع الذي قمت بتثبيته عبر Homebrew.
أخيرًا، تأكد من أنك تعمل في بيئة تشغيل تستخدم الإصدار الصحيح من Python. يمكنك ذلك عبر التحقق من مسار Python الذي يتم استخدامه داخل السكربت. يمكنك إلحاق السطر التالي في بداية السكربت للتأكد من استخدام البيئة الافتراضية:
python#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print(sys.executable)
بعد اتخاذ هذه الخطوات، يجب أن تكون قادرًا على تجنب الخطأ المتعلق بـ “sslmode” والاتصال بقاعدة البيانات Postgres بنجاح.