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