Singleton, accès aux bases de donnée

a marqué ce sujet comme résolu.

Bonjour,

Je suis entrain de faire un web service qui accède à plusieurs base de données. Pour chacune, j'ai un singleton qui est utilisé pour y accéder (pour ne pas multiplier les connexions aux bases de données).

Le problème, c'est que dans le lot, il y a une base oracle dont la structure est identique pour tout le monde mais dont les préfixes de table changent en fonction de la personne qui fait la requête (en fait, plusieurs fois la même base oracle en gros).

Comment représenter ça en objets python? Apriori, il me faut une instance du même objet pour chaque base oracle (pas de singleton ici) mais que chacune ne puisse être instanciée qu'une seule fois (un singleton!).

+0 -0

Le plus simple serait d'avoir un objet fabrique : un objet chargé de te renvoyer l'instance existance, ou d'en créer un nouvelle, en fonction des arguments.

L'autre solution est de surcharger __new__ pour renvoyer une instance existante plutôt que d'en créer une quand tu le détecte.

M'est avis qu'il vaut mieux passer par une Factory (première proposition de Kje) si quelqu'un doit relire ton code.

Le comportement que tu viens de nous décrire c'est quasi-strictement le code de la factory, ça me paraît sain de l'avoir bien propre dans son coin et bien documenté.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte