{"id":56,"date":"2024-11-24T11:42:33","date_gmt":"2024-11-24T10:42:33","guid":{"rendered":"https:\/\/fpromesses.tech\/?p=56"},"modified":"2024-11-24T11:42:33","modified_gmt":"2024-11-24T10:42:33","slug":"chatgpt-pour-maider-a-developper","status":"publish","type":"post","link":"https:\/\/fpromesses.tech\/index.php\/2024\/11\/24\/chatgpt-pour-maider-a-developper\/","title":{"rendered":"ChatGpt pour m&#8217;aider \u00e0 d\u00e9velopper"},"content":{"rendered":"\n<p>En ce moment, je monte en comp\u00e9tence sur Python.<\/p>\n\n\n\n<p>J&#8217;utilise l&#8217;h\u00e9bergeur Hostinger pour h\u00e9berger une base MySql \u00e0 laquelle mon application acc\u00e8de.<br>J&#8217;ai \u00e9t\u00e9 confront\u00e9 \u00e0 une erreur que je ne savais pas r\u00e9soudre rapidement.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User 'xxx' has exceeded the 'max_connections_per_hour' resource (current value: 500)<\/code><\/pre>\n\n\n\n<p>C&#8217;est une limite de connexion.<br>Comme mon application tournait en boucle, je d\u00e9passais cette limite.<\/p>\n\n\n\n<p>J&#8217;ai donc demand\u00e9 \u00e0 ChatGpt de m&#8217;aider.<br>Il m&#8217;a propos\u00e9 plusieurs solution dont une qui consistait \u00e0 cr\u00e9er un singleton pour g\u00e9rer la connexion \u00e0 ma base de donn\u00e9es<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import mysql.connector as cpy\nfrom mysql.connector import Error\nfrom db_config import config  # Configuration stock\u00e9e dans un fichier s\u00e9par\u00e9\n\nclass DBConnection:\n    \"\"\"Singleton pour g\u00e9rer une connexion unique \u00e0 la base de donn\u00e9es.\"\"\"\n\n    _instance = None  # Stocke l'instance unique\n\n    def __new__(cls, *args, **kwargs):\n        # Si une instance n'existe pas encore, la cr\u00e9er\n        if cls._instance is None:\n            cls._instance = super(DBConnection, cls).__new__(cls, *args, **kwargs)\n            cls._instance._init_connection()  # Initialiser la connexion\n        return cls._instance\n\n    def _init_connection(self):\n        \"\"\"Initialise la connexion MySQL.\"\"\"\n        try:\n            self.connection = cpy.connect(**config)\n            print(\"Connexion \u00e0 la base de donn\u00e9es \u00e9tablie.\")\n        except Error as e:\n            print(f\"Erreur lors de la connexion : {e}\")\n            self.connection = None\n\n    def get_connection(self):\n        \"\"\"Retourne la connexion MySQL.\"\"\"\n        if self.connection is None or not self.connection.is_connected():\n            print(\"Reconnexion \u00e0 la base de donn\u00e9es...\")\n            self._init_connection()\n        return self.connection\n\n    def close_connection(self):\n        \"\"\"Ferme la connexion MySQL.\"\"\"\n        if self.connection and self.connection.is_connected():\n            self.connection.close()\n            print(\"Connexion \u00e0 la base de donn\u00e9es ferm\u00e9e.\")\n            self.connection = None\n<\/code><\/pre>\n\n\n\n<p>Ensuite, il me suffisait plus qu&#8217;\u00e0 utiliser cette classe dans ma fonction ainsi<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from db_connection import DBConnection\n\ndef exec_query_list_obj(req):\n    \"\"\"Ex\u00e9cute une requ\u00eate SQL et retourne les r\u00e9sultats.\"\"\"\n    try:\n        # Obtenir l'instance unique de la connexion\n        db_instance = DBConnection()\n        cnx = db_instance.get_connection()\n\n        # Cr\u00e9ation du curseur\n        cursor = cnx.cursor(dictionary=True)\n\n        # Ex\u00e9cution de la requ\u00eate\n        cursor.execute(req)\n\n        # R\u00e9cup\u00e9ration des r\u00e9sultats\n        result = cursor.fetchall()\n\n        # Fermeture du curseur\n        cursor.close()\n\n        return result\n\n    except Exception as e:\n        print(f\"Erreur : {e}\")\n        return None\n\nif __name__ == \"__main__\":\n    try:\n        query = \"SELECT * FROM Personne\"\n        result = exec_query_list_obj(query)\n        print(result)\n\n    finally:\n        # Fermer la connexion lors de la fin de l'application\n        db_instance = DBConnection()\n        db_instance.close_connection()\n<\/code><\/pre>\n\n\n\n<p>ChatGpt me fait gagner beaucoup de temps dans mes d\u00e9veloppements<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En ce moment, je monte en comp\u00e9tence sur Python. J&#8217;utilise l&#8217;h\u00e9bergeur Hostinger pour h\u00e9berger une base MySql \u00e0 laquelle mon application acc\u00e8de.J&#8217;ai \u00e9t\u00e9 confront\u00e9 \u00e0 une erreur que je ne savais pas r\u00e9soudre rapidement. C&#8217;est une limite de connexion.Comme mon application tournait en boucle, je d\u00e9passais cette limite. J&#8217;ai donc demand\u00e9 \u00e0 ChatGpt de m&#8217;aider.Il [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-56","post","type-post","status-publish","format-standard","hentry","category-developpement"],"_links":{"self":[{"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/posts\/56","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/comments?post=56"}],"version-history":[{"count":1,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":57,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/posts\/56\/revisions\/57"}],"wp:attachment":[{"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/media?parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/categories?post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fpromesses.tech\/index.php\/wp-json\/wp\/v2\/tags?post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}