#!/usr/bin/env python3 """ Script de test de connexion à MariaDB Usage: python scripts/test_mariadb_connection.py """ import os import sys from pathlib import Path from dotenv import load_dotenv # Charger le .env BASE_DIR = Path(__file__).resolve().parent.parent load_dotenv(BASE_DIR / '.env') def test_import(): """Tester l'import de MySQLdb""" print("🔍 Test 1 : Import du module MySQLdb...") try: import MySQLdb print(" ✅ MySQLdb importé avec succès") return True except ImportError as e: print(f" ❌ Erreur d'import: {e}") print(" 💡 Installez mysqlclient: pip install mysqlclient") return False def test_connection(): """Tester la connexion à MariaDB""" print("\n🔍 Test 2 : Connexion à MariaDB...") # Récupérer les paramètres depuis .env db_host = os.getenv('DB_HOST', 'localhost') db_port = int(os.getenv('DB_PORT', '3306')) db_user = os.getenv('DB_USER', 'root') db_password = os.getenv('DB_PASSWORD', '') db_name = os.getenv('DB_NAME', 'duhaz_blog') print(f" Paramètres de connexion:") print(f" - Hôte: {db_host}") print(f" - Port: {db_port}") print(f" - Utilisateur: {db_user}") print(f" - Base: {db_name}") print() try: import MySQLdb conn = MySQLdb.connect( host=db_host, port=db_port, user=db_user, passwd=db_password, db=db_name ) print(" ✅ Connexion établie avec succès!") # Tester une requête cursor = conn.cursor() cursor.execute("SELECT VERSION()") version = cursor.fetchone() print(f" 📊 Version MariaDB: {version[0]}") cursor.execute("SELECT DATABASE()") current_db = cursor.fetchone() print(f" 📂 Base de données active: {current_db[0]}") cursor.close() conn.close() return True except Exception as e: print(f" ❌ Erreur de connexion: {e}") print() print(" 💡 Vérifications à faire:") print(" 1. Le conteneur MariaDB est-il démarré?") print(" docker ps | grep mariadb") print(" 2. Le port est-il exposé?") print(" docker port mariadb") print(" 3. Pouvez-vous pinguer l'hôte?") print(f" ping {db_host}") print(" 4. Le port est-il accessible?") print(f" telnet {db_host} {db_port}") return False def test_django_connection(): """Tester la connexion via Django""" print("\n🔍 Test 3 : Connexion via Django...") # Vérifier que DB_ENGINE est bien configuré db_engine = os.getenv('DB_ENGINE', 'sqlite3') if db_engine != 'mysql': print(f" ⚠️ DB_ENGINE={db_engine} (devrait être 'mysql')") print(" 💡 Modifiez votre .env: DB_ENGINE=mysql") return False try: # Setup Django os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'duhaz_blog.settings') import django django.setup() from django.db import connection with connection.cursor() as cursor: cursor.execute("SELECT VERSION()") version = cursor.fetchone() print(f" ✅ Django connecté à MariaDB {version[0]}") return True except Exception as e: print(f" ❌ Erreur Django: {e}") return False def main(): print("=" * 60) print("🧪 Test de connexion MariaDB") print("=" * 60) print() # Test 1: Import if not test_import(): return 1 # Test 2: Connexion directe if not test_connection(): return 1 # Test 3: Connexion via Django if not test_django_connection(): return 1 print("\n" + "=" * 60) print("✅ Tous les tests sont passés!") print("=" * 60) print() print("Vous pouvez maintenant lancer la migration:") print(" python scripts/migrate_to_mariadb.py") print() return 0 if __name__ == '__main__': sys.exit(main())