November 2024

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

Gladiator II

Film vu Mercredi 22 novembre 2024.
Je n’ai pas aimé ce film.

Le premier du nom m’avait laissé un doux souvenir.
J’étais content de retrouver cette ambiance.

Les costumes et décors étaient magnifiques.

Malheureusement, le scénario n’était pas à la hauteur de mes attentes.

L’histoire d’un fils abandonné mais qui a le sang de Maximus qui coule dans ses veines.
Il est donc un gladiateur très fort.
Les combats avec les babouins ratés, le passage Dent de la mer, le rhino hyper balaise, les frères jumeaux pas charismatiques.
Denzel qui joue un rôle, je dirais, alimentaire, tellement c’est facile.

Je n’en dis pas plus, mais je suis sorti très déçu de la séance.