Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1512 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Problème d'organisation et d'accès au données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'organisation et d'accès au données

n°1262473
multani
Dépressionnisé
Posté le 09-12-2005 à 12:01:21  profilanswer
 

Salut,
 
j'ai un problème d'organisation de mon code et d'accès à certaines de mes données. Mon projet est un truc web qui manipule une base de données. Pour l'instant, c'est organisé comme ça (c'est sujet à modifications d'ailleurs, chuis pas fixé la dessus) :


bli/
   __init__.py
   Base.py
   blu.py
   blo.py
   etc.py
   
config.py
tests.py


Le contenu du répertoire /bli/ contient des classes qui vont interagir avec la base de données (en gros, un truc du genre Active Record). Base est la super-classe à partir de laquelle dérive toutes les autres.
 
J'ai commencé à écrire mes tests unitaires (dans /tests.py) pour tester mon truc et config.py contient mes options de configuration (paramètre de connection à la BD, etc.) Ca ressemble à ça :


 def testBluLoad (self):
  """Test le chargement d'une carte déjà existante."""
  b1 = bli.blu()
  b1.name = "Home One"
  b1.id_truc = 1
  b1.machin = 1
  b1.save()
   
  b2 = bli.blu(b1.id)
  self.assertEqual(b1.id, b2.id)
  self.assertEqual(b1.name, b2.name)
  self.assertEqual(b1.id_truc, b2.id_truc)
  self.assertEqual(b1.machin, b2.machin)


Le problème, c'est la connection SQL. J'en ai forcément besoin dans mes classes de /bli/ . Actuellement, elle est ouverte dans tests.py, et à part la passer en paramètre à dans chaque constructeur de chaque classe ( [:pingouino] ), j'vois pas trop :/
Je me sers de pyscopg (interface pour PostgreSQL), je l'ai pas wrappé du tout.
 
Ce que j'aimerais, c'est ouvrir une connection globale à la BD quelque part (à définir [:dawa] ), et pouvoir la récupérer automatiquement dans le constructeur de Base par ex., sans que j'ai à la passer de partout (éventuellement, y'aura d'autres trucs qui fonctionneront de la même manière).
 
Voilà, donc c'est plus un problème d'organisation que j'ai [:dawa]
Tout aides & conseils sont les bienvenues [:romf]

Message cité 1 fois
Message édité par multani le 09-12-2005 à 17:14:58
mood
Publicité
Posté le 09-12-2005 à 12:01:21  profilanswer
 

n°1262514
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2005 à 13:13:20  profilanswer
 

multani a écrit :

Le contenu du répertoire /bli/ contient des classes qui vont interagir avec la base de données (en gros, un truc du genre Active Record). Base est la super-classe à partir de laquelle dérive toutes les autres.


On est pas en Java là, ça n'a aucun sens de mettre une classe par fichier [:moule_bite]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1262773
multani
Dépressionnisé
Posté le 09-12-2005 à 15:53:40  profilanswer
 

Certes, mais c'etait plus pour l'exemple là [:dawao]
Puis ça m'aide pas trop pour mon problème aussi [:dawa]

n°1262785
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2005 à 16:02:41  profilanswer
 

Oué mais stu veux vu la clarté de l'exposition du problème...
(nan paske t'es au courant qu'il y a un framework de tests unitaires en python?)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1262793
multani
Dépressionnisé
Posté le 09-12-2005 à 16:10:38  profilanswer
 

masklinn a écrit :

Oué mais stu veux vu la clarté de l'exposition du problème...


En gros : j'ai une hiérarchie de module (comme je l'ai présenté, ou un truc mieux). J'aimerais créer une connection à ma base de données dans un de mes scripts à la racine de mon projet, ou dans un des modules, et faire passer cette connection à mes autres modules. Et je voudrais savoir les solutions que je pourrais utiliser.

masklinn a écrit :

(nan paske t'es au courant qu'il y a un framework de tests unitaires en python?)


Ouais, d'ailleurs, chuis sympa, j'ai mis un exemple de ce que j'en ai fais [:dawa] (si tu parles de unittest)

n°1262801
masklinn
í dag viðrar vel til loftárása
Posté le 09-12-2005 à 16:14:26  profilanswer
 

multani a écrit :

En gros : j'ai une hiérarchie de module (comme je l'ai présenté, ou un truc mieux). J'aimerais créer une connection à ma base de données dans un de mes scripts à la racine de mon projet, ou dans un des modules, et faire passer cette connection à mes autres modules. Et je voudrais savoir les solutions que je pourrais utiliser.


???
 
Singleton [:petrus dei]

Citation :

Ouais, d'ailleurs, chuis sympa, j'ai mis un exemple de ce que j'en ai fais [:dawa]


Ca ressemble sûrement pas à un test unitaire ça [:petrus75]
(au fait, t'es au courant que les constructeurs peuvent avoir des arguments?)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1262873
multani
Dépressionnisé
Posté le 09-12-2005 à 17:05:42  profilanswer
 

masklinn a écrit :

???
 
Singleton [:petrus dei]


Ouais, j'veux bien, mais je _vois_ pas comment le référencer :
 - je le fout où ? dans /, dans un module séparé, dans le même module que l'accès à ma base ?
 - si je le fout dans un un module séparé de celui qui accède à ma base, comment je le récupère ? Si j'ai un module /truc, et un module /machin (à priori pas dans le même espace de nom), je référence mon singleton comment ?
 
Ca parait con, sans doutes, mais j'ai du mal à saisir.

masklinn a écrit :


Citation :

Ouais, d'ailleurs, chuis sympa, j'ai mis un exemple de ce que j'en ai fais [:dawa]


Ca ressemble sûrement pas à un test unitaire ça [:petrus75]


D'accord, c'est ptêtre pas le meilleur exemple, je le corrige de suite.

masklinn a écrit :

(au fait, t'es au courant que les constructeurs peuvent avoir des arguments?)


Ouais. D'ailleurs, je pourrais arrêter de me prendre la tête et foutre mon objet sql_connection par là. Mais bon :/ (et oui, je ferais surement un constructeur qui prend un hash d'attributs en paramètre).

n°1265954
multani
Dépressionnisé
Posté le 13-12-2005 à 21:56:59  profilanswer
 

Bon au fait, j'ai trouvé la super solution [:petrus75]
 
j'avais pas capté que dans le module bli.gni je pouvais faire un import bli.Connection par ex. [:petrus75]
 
Tout de suite, ça aide vachement [:petrus75]
 
Merci masklinn [:petrus75]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Problème d'organisation et d'accès au données

 

Sujets relatifs
Problème avec CommonDialog dans une classe 'MustInherit'Problème menu déroulant [self-résolu]
Problème pour faire marcher "xsl:when"problème spam via formulaire en ligne
alimenter une base de donnèes via des services webProblème avec foreach
Petit probleme de récursivité entre deux appels de subProblème de lecture .wmv dans le code HTML
Gestion des données d'un fichier TXTprobleme compatibilité
Plus de sujets relatifs à : Problème d'organisation et d'accès au données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR