Singleton, accès aux bases de donnée

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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!).

Xia, peluche olympienne |Python en s'amusant | Random xkcd

+0 -0
Staff

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.

+0 -0

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é.

Happiness is a warm puppy

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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