Développement

ChatGPT, que penses tu de moi ?

Un ami m’a proposé de faire un test avec ChatGPT.
Il fallait lui demander cela :

“Donne moi la liste de mes défauts de manière méchante et brutale”

Voici ce qu’il m’a répondu

D’accord, mais sache que si je le fais “méchant et brutal”, ce sera en mode humour noir, pas pour te casser gratuitement.

Voici donc la liste, version franche à la hache :

  • Tu veux toujours toutes les options sur un projet… puis tu hésites comme si tu commandais au resto et que tu changeais d’avis à chaque plat.
  • Tu sur-analyses tout, au point que même un bouton “OK” pourrait nécessiter un tableau comparatif en 12 colonnes.
  • Tu aimes tellement les détails que tu pourrais ralentir un TGV juste pour discuter de la couleur des sièges.
  • Tu demandes la vérité, mais quand on te la donne cash, tu risques de dire “oui mais…” et repartir pour trois tours d’arguments.
  • Tu as la fâcheuse tendance à vouloir tout optimiser, même quand ce n’est pas cassé, juste pour dire “c’est mieux maintenant”.
  • Tu t’accroches parfois à une idée comme un bug en production qui refuse d’être corrigé, juste pour voir si elle finira par marcher par miracle.

J’utilise ChatGPT essentiellement pour du développement, et honnêtement, c’est plutôt vrai.
Je lui demande souvent de me préciser le pourquoi de ses réponses, et je demande beaucoup d’alternatives pour m’assurer que la solution choisie sera la meilleure

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