|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 9 ![]() |
bonjour
je suis nouveau ici je m appelle william et je commence un pojet asser important en postgresql que j ai jaimmais utiliser je me pose plein de question et j espere que vous pourier m aider pour un insert j aimerai utiliser une fonction que j ai decomposer en 1 fonction qui appelle 2 sous fonction,la principale appelle addid et dpass que voici CREATE OR REPLACE FUNCTION addid(x integer, chaine text) RETURNS text AS $BODY$ if x > -1: if chaine == 'Z' chaine[x] chaine = addid (--x,chaine) else : if chaine[x]=='9' chaine[x]='a' else : $chaine[x]++ return chaine return chaine $BODY$ LANGUAGE 'plpythonu' VOLATILE; 2 la sous fonction CREATE OR REPLACE FUNCTION dpass() RETURNS text AS $BODY$ pass=""; pass[0]=random(a..z); i=0; while i<4 pass[I]=random(1..9); return pass $BODY$ LANGUAGE 'plpythonu' VOLATILE; voici la fonction principql que j aimerai appeller en php --------------------------------------------------------------- CREATE OR REPLACE FUNCTION add_client(nom text, prenom text, mail text) RETURNS boolean AS $BODY$ DECLARE liste record; id text; nid text; npass text; begin FOR liste IN select fin_client from index_serveur where id=1 LOOP id=liste[0]; END LOOP; nid=addid (5,id); update index_serveur set fin_client=nid where id=1; npass= dpass (); insert into client values (nid,npass,nom,mail,'I','0','',prenom); return true; end $BODY$ LANGUAGE 'plpgsql' VOLATILE; si tout ca est accepter par l editeur de requete pgqdmin3 je ne suis pas du tout sur que ca fonctionne et que la syntaxe est bonne question 1 ---------------- est qu'on peut faire des sous fonction en postgresql question 2 --------------- comment tester ca dans pgadmin3 question 3 -------------------- peut on appeller une fonction plpython par une fonction plpgsql question 4 --------------- j ai reussie a me connecter en php faire un insert ou un select mais je ne trouve pas comment appeller la fonction en php question 5 --------------- je tester les fonction en addid et dpass en php ca fonctionne mais je pense que l execution sera plus rapide sur le serveur sql et plus facile pour les backup ,mais une confirmation de ca serai la bienvenu un grand merci pour votre aide d'avance willl |
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
Y a t il une raison particulière à passer de fonction plpgslq à python ou l'inverse ? Il vaut mieux n'en garder qu'un seul (perso : plpgsql). Tu peux sans pb appeler une fonction Python dans plpgsql.
Cette partie est bizarre : Code :
Sur ta fonction "add_client" le type de retour est un boolean, mais tu ne renvoie que true. Ca sert peut être plus à grand chose. De plus, tu utilises une variable id alors que dans ta requête "where id=1" tu as un id mais en tant que champs. Je ne connais pas le Python, mais es tu sûr que la syntaxe suivante est correcte : Code :
Code :
SELECT nomdelafonction(param1,param2,...); sous php : Code :
$res = pg_query($cn, "SELECT nomdelafonction(param1,param2,...);"); A+ |
||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 9 ![]() |
un grand merci pour ton aide
j ai jammais fait du python mais je pense qu il est plus adapter a des fonction de chaine de caractere et je ne vois pas comment faire une fonction recursive en plpgsql quand a la partie FOR liste IN SELECT fin_client FROM index_serveur WHERE id=1 LOOP id=liste[0]; END LOOP; j ai vue ca sur un autre forum j ai trouver ca bizare aussi j ai pas encore debuger c est function on elle ete accepter par pgadmi mais n on jammais tourner car je ne savais comment faire maintenant j espere que ca va aller grace a toi bien vu pour le mauvais non de variable id je vais suivre tes reponse pour debuguer tout ca tu pourrai me dire si on peut faire des fonction recursive en plpgsql quand au chaine[x] il s'agit de tester ou modifier le le cartere x de la string chaine comme dans de nombreux language je dois verifier si sa marche en python encore merci je revient vert toi une fois les test fait |
|
|
00
|
|
|
#4 | |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
J'ai jamais de récursivité en plpgsql. Je ne sais pas si c'est possible. Si quelqu'un d'autre peut répondre !!!
Citation:
A+ |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 9 ![]() |
bonjour
j ai essayer tout la journee de faire tournee les fonciton sur le serveur postgresql sans succes estimant perdant beaucoup de temp et n'etant pas sur de pouvoir faire des fonction recusive j ai tout fait en php resulta ca fonctionne et ca va tres vite casi instantané j ai un autre petit souci j ai mis un captcha et un session ansi que verification de tout les champ mais j aurai voulu rajouter la securiter d une connection avec un user limiter en droit j ai bon tripoter dans pgadmin 3 ca marche pas poutrant j ai j ai reussi a enlever les droit de postgres par securite j ai ca dans la table en question GRANT INSERT ON TABLE client TO insert_client_groupe WITH GRANT OPTION; et l utilisateur insert_client appartient insert_cl GRANT inser_cl TO insert_client; il se connect mais me dit qu il pas le droit un grand merci pour votre aide will |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2007 Messages : 9 ![]() |
dans la table client
j ai session comme grant GRANT INSERT ON TABLE client TO inser_cl WITH GRANT OPTION; et non GRANT INSERT ON TABLE client TO insert_client_groupe WITH GRANT OPTION; merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com