ChatGpt pour m’aider à développer

En ce moment, je monte en compétence sur Python.

J’utilise l’hébergeur Hostinger pour héberger une base MySql à laquelle mon application accède.
J’ai été confronté à une erreur que je ne savais pas résoudre rapidement.

User 'xxx' has exceeded the 'max_connections_per_hour' resource (current value: 500)

C’est une limite de connexion.
Comme mon application tournait en boucle, je dépassais cette limite.

J’ai donc demandé à ChatGpt de m’aider.
Il m’a proposé plusieurs solution dont une qui consistait à créer un singleton pour gérer la connexion à ma base de données

import mysql.connector as cpy
from mysql.connector import Error
from db_config import config  # Configuration stockée dans un fichier séparé

class DBConnection:
    """Singleton pour gérer une connexion unique à la base de données."""

    _instance = None  # Stocke l'instance unique

    def __new__(cls, *args, **kwargs):
        # Si une instance n'existe pas encore, la créer
        if cls._instance is None:
            cls._instance = super(DBConnection, cls).__new__(cls, *args, **kwargs)
            cls._instance._init_connection()  # Initialiser la connexion
        return cls._instance

    def _init_connection(self):
        """Initialise la connexion MySQL."""
        try:
            self.connection = cpy.connect(**config)
            print("Connexion à la base de données établie.")
        except Error as e:
            print(f"Erreur lors de la connexion : {e}")
            self.connection = None

    def get_connection(self):
        """Retourne la connexion MySQL."""
        if self.connection is None or not self.connection.is_connected():
            print("Reconnexion à la base de données...")
            self._init_connection()
        return self.connection

    def close_connection(self):
        """Ferme la connexion MySQL."""
        if self.connection and self.connection.is_connected():
            self.connection.close()
            print("Connexion à la base de données fermée.")
            self.connection = None

Ensuite, il me suffisait plus qu’à utiliser cette classe dans ma fonction ainsi

from db_connection import DBConnection

def exec_query_list_obj(req):
    """Exécute une requête SQL et retourne les résultats."""
    try:
        # Obtenir l'instance unique de la connexion
        db_instance = DBConnection()
        cnx = db_instance.get_connection()

        # Création du curseur
        cursor = cnx.cursor(dictionary=True)

        # Exécution de la requête
        cursor.execute(req)

        # Récupération des résultats
        result = cursor.fetchall()

        # Fermeture du curseur
        cursor.close()

        return result

    except Exception as e:
        print(f"Erreur : {e}")
        return None

if __name__ == "__main__":
    try:
        query = "SELECT * FROM Personne"
        result = exec_query_list_obj(query)
        print(result)

    finally:
        # Fermer la connexion lors de la fin de l'application
        db_instance = DBConnection()
        db_instance.close_connection()

ChatGpt me fait gagner beaucoup de temps dans mes développements