#!/usr/bin/env python # -*- coding: utf-8 -*- """ وحدة الاتصال بقاعدة البيانات """ import os import sys import psycopg2 from dotenv import load_dotenv # إضافة مسار النظام للوصول للملفات المشتركة sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) # تحميل متغيرات البيئة load_dotenv() def get_connection(): """ إنشاء اتصال بقاعدة البيانات الإرجاع: اتصال بقاعدة البيانات """ try: # محاولة الاتصال بقاعدة البيانات conn = psycopg2.connect( dbname=os.getenv("PGDATABASE"), user=os.getenv("PGUSER"), password=os.getenv("PGPASSWORD"), host=os.getenv("PGHOST"), port=os.getenv("PGPORT") ) return conn except Exception as e: print(f"خطأ في الاتصال بقاعدة البيانات: {e}") # إذا فشل الاتصال، استخدم اتصال قاعدة بيانات SQLite محلية import os import sqlite3 # إنشاء مجلد البيانات إذا لم يكن موجوداً data_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data') os.makedirs(data_dir, exist_ok=True) # إنشاء اتصال قاعدة بيانات SQLite محلية db_path = os.path.join(data_dir, 'local_db.sqlite') conn = sqlite3.connect(db_path) # إعادة محاكاة سلوك اتصال PostgreSQL conn.execute = conn.cursor().execute # إضافة وظيفة وهمية للاقتطاع (commit) والإغلاق original_close = conn.close def enhanced_close(): conn.commit() original_close() conn.close = enhanced_close return conn