Journal ZOPE et DB relationnelle

Posté par  .
Étiquettes : aucune
0
6
mai
2004
Je me suis enfin décidé à passer à ZOPE... mais je me heurte déjà à quelques problèmes.

Comment gérer les connections avec postgresql depuis un script python sachant que 'aimerais utiliser python DB API V2, est-ce possible ou faut-il absolument passer par des ZSQL methods ?

Je préfère 1000 fois:
cursor.execute('select * from employees where name like %s and firsname=%s', (name,firstname))

à un fichier contenant:
select * from employees
<dtml-sqlgroup where>
<dtml-sqltest name type="string" op="like">
<dtml-and>
<dtml-sqltest name type="string" op="eq">
</dtml-sqlgroup>

Merci.
  • # DTML est mort, vive ZPT

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    DTML c'est dépassé :)
    On utilise zpt (avec tal et metal) maintenant...
    Que tu puisses faire de cette manière ne signifie nullement que ce soit une obligation.
    • [^] # Re: DTML est mort, vive ZPT

      Posté par  . Évalué à 1.

      Oui, je suis d'accord. Mais comment faire ???
    • [^] # Re: DTML est mort, vive ZPT

      Posté par  . Évalué à 1.

      Putain mais j'en ai marre de devoir reprendre les gens à chaque fois là-dessus !

      ZPT est un langage de template pour les documents de type HTML et XHTML (même XML peut-être). POINT BARRE !

      DTML est un langage moins contraignant et plus générique qui peut servir à générer pleins de formats comme CSS et SQL.
  • # methode externe

    Posté par  . Évalué à 1.

    Salut,

    il me semble que tu a plusieurs choix : soit tu passe par des methodes externes avec les modules python que tu veux pour gerer postgres ( pyscopg, pygresql, popy...)
    je pense que ce n'est po le plus simple car faut que tu cree 1 methode a chaque appel de fonction

    soit il me semble qu'il existe un produit zope pour utiliser directement mais je sais plus le nom


    j'ai trouver ca sur google :
    http://mail.zope.org/pipermail/zope-announce/2000-May/000189.html(...)

    voila a+
    • [^] # Re: methode externe

      Posté par  . Évalué à 2.

      soit tu passe par des methodes externes avec les modules python que tu veux pour gerer postgres

      Il faut noter qu'en cas d'erreur lors de la gestion d'une requête Zope, les requêtes SQL effectuées par ces modules python externes ne seront pas annulées, contrairement aux requêtes SQL effectuées à travers le DA de Zope.
  • # Bouhouhou mon pauvre

    Posté par  . Évalué à 2.

    Je vois pas ce qui te gêne, c'est pas comme si t'allais écrire ça tous les jours.

    Les avantages de l'utilisation des ZSQL Methods sont :

    - contrôle du nombre et du type des arguments ;

    - contrôle du type des variables ;

    - quote automatique des chaînes qui pourraient être dangereuses (cross-site scripting) ;

    - Intégration dans la transaction de la requête et donc annulation (rollback) propre en cas d'exception.

    Et sûrement d'autres que je ne connais pas parce que je n'utilise plus de BDR. Sans compter que Zope prend aussi en charge le pooling.

    En plus, c'est pas un fichier mais un objet, avec son interface, ses propriétés, ses permissions, etc. Enfin bref, c'est dix fois plus puissant que ta ligne. Ajoutes-y tout ce que fait ZSQL pour toi et tu verras ce qui est le plus contraignant.
    • [^] # Re: Bouhouhou mon pauvre

      Posté par  . Évalué à 3.

      > En plus, c'est pas un fichier mais un objet, avec son interface, ses
      > propriétés, ses permissions, etc. Enfin bref, c'est dix fois plus
      > puissant que ta ligne.

      Je confirme a 100%.

      Exemple 1 : j'ai eu a faire une recherche dans un annuaire (2 tables) sans imposer le champ de recherche (pouvoir remplir ce qu'on veut dans 6 critères) associé a une recherche libre dans tous les champs.
      Une seule requete ZSQL m'a permis de gérer tous les use case de champ rempli ou non rempli (le SQL généré en tenait compte grace a ZSQL). Il m'aurait fallu des dizaines de requetes pour prendre en compte tous mes use case.

      Je pourrai rechercher l'exemple si tu es intéressé.

      Exemple 2 : Le résultat d'une requete est lui meme un objet. Et la puissance de zope s'applique : Tu peux changer le MCD sous-jacent, en changeant juste la requete ZSQL et tu ne change rien (!) au traitement et a la présentation. Etc .

      Zope est vraiment un framework et pas un langage ou une BD.

      De plus pour DTML vs ZPT, un outil n'est pas obsolete. il est adapté ou non au contexte. En l'occurence, pour le ZSQL c'est DTML qu'il te faut.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.