| |
| |
| |
| |
| |
| |
|
|
| import sqlite3 |
| import os |
| import logging |
|
|
| logger = logging.getLogger(__name__) |
|
|
| |
| DB_PATH = os.path.join( |
| os.path.dirname(os.path.dirname(os.path.abspath(__file__))), |
| "bot_database.db" |
| ) |
|
|
|
|
| def get_connection() -> sqlite3.Connection: |
| """ |
| إنشاء اتصال بقاعدة البيانات مع أفضل إعدادات الأداء. |
| |
| PRAGMA المستخدمة وسببها: |
| - WAL: كتابة متوازية (قراءة لا تحجب الكتابة) |
| - cache_size=-65536: 64MB في الذاكرة (سرعة أعلى) |
| - synchronous=NORMAL: توازن أمان/سرعة |
| - foreign_keys=ON: تطبيق قيود العلاقات |
| - row_factory: إرجاع النتائج كـ dict قابلة للوصول بالاسم |
| """ |
| conn = sqlite3.connect(DB_PATH, timeout=30) |
| conn.execute("PRAGMA journal_mode=WAL") |
| conn.execute("PRAGMA cache_size=-65536") |
| conn.execute("PRAGMA synchronous=NORMAL") |
| conn.execute("PRAGMA foreign_keys=ON") |
| conn.row_factory = sqlite3.Row |
| return conn |
|
|