Mas isso eu já consigo sem problemas.
A questão é, como conseguir passar a função do primeiro script (que pus no 
email) e conseguir atribuir a uma variável o valor resultante do NEW.email...

Obrigado!

Sent from my iPhone

On 10/07/2012, at 07:46, Eloi Ribeiro <[email protected]> wrote:

> Em python podes-te ligar a PostgreSQL e realizar uma consulta:
> 
> -----------------------------------------
>     import psycopg2
>     import getpass
>     password = getpass.getpass('Senha: ')
>     conn = psycopg2.connect("dbname='nome_bd' user='utilizador' host='host' 
> password='%s'" % password);
>     cur = conn.cursor()
>     cur.execute("SELECT campo1, campo2 FROM tabela WHERE campo = 'blah' ")
>     rows = cur.fetchall()
>     for row in rows:
>         campo1 = row[0]
>         campo2 = row[1]
>         print campo1, campo2
> -----------------------------------------
> 
> Espero que seja útil.
> Cumprimentos,
> 
> Eloi Ribeiro
> GIS Analyst
> 39,45º -0,40º
> flavors.me/eloiribeiro
> 
> 
> No dia 9 de Julho de 2012 23:55, Filipe Brandão 
> <[email protected]> escreveu:
> Boa noite.
> 
> Gostaria de saber se alguém me pode ajudar num problema que estou a tentar 
> resolver.
> Cenário: Tenho uma BD com duas tabelas. A primeira só tem uma linha, que se 
> pode editar (update) via user form. Cada vez que essa mesma linha é editada, 
> é populada a 2ª tabela (com um trigger que dispara sempre que há um update na 
> 1ª tabela), de modo incremental (insert). Deste modo tenho um historial de 
> todas as interacções entre utilizadores e a 1ª tabela.
> Criei outro trigger para enviar emails aos users que interajam com a 1ª 
> tabela (um dos campos que preenchem é um endereço de email), também depois de 
> haver updates nessa mesma 1ª tabela. Este trigger dispara um script em python 
> que faz esse mesmo envio.
> Preciso ainda que cada vez que haja um envio, este seja feito para o ultimo 
> endereço a ser inserido na 2ª tabela (tenho um atributo com datatype serial, 
> para saber sempre qual a ultima linha da tabela). Até aqui tudo ok.
> Agora o problema. Quando há um update na 1ª tabela os dois triggers disparam 
> e correm, mas no caso do envio de emails é sempre enviado o email para o 
> ultimo registo da tabela antes desse mesmo update!
> Ou seja, há uma transacção em curso e o trigger "não vê" o ultimo registo uma 
> vez que ainda não foi feito um commit na BD, que só acontece depois de a 
> transacção acabar.
> Já vi que não é possível disparar triggers depois de triggers, que não 
> consigo fazer commit a meio de uma transacção, etc.
> Como poderei dar a volta a isto?
> Aquilo que me pareceu mais óbvio era aproveitar o primeiro trigger de que vos 
> falei, uma vez que nele consigo ir buscar os novos valores da 1ª tabela (que 
> depois são inseridos na 2ª). Mas não consegui programar o script em python 
> para incluir essa mesma função.
> A função é basicamente isto, e funciona bem (ele saca o new.email para a 2ª 
> tabela):
> CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $emp_audit$
>     BEGIN
> 
>         IF (TG_OP = 'UPDATE') THEN
>             INSERT INTO emp_audit SELECT 'D', now(), user, NEW.email;
>         END IF;
> 
>         RETURN NULL; -- result is ignored since this is an AFTER trigger
>     END;
> $emp_audit$ LANGUAGE plpgsql;
> 
> CREATE TRIGGER emp_audit
> AFTER UPDATE ON emp
>     FOR EACH ROW EXECUTE PROCEDURE process_emp_audit();
> A função em python já a tenho escrita e funciona bem (neste momento não tenho 
> aqui o código).
> Precisava apenas de conseguir definir uma variável no python que me desse o 
> valor do NEW.email, do género recipient = select NEW.email from emp;
> Alguma ideia de como ir sacar aquele new.email e usar como variável no script 
> em python?
> 
> Obrigado a todos e espero ter-me feito entender...
> 
> Filipe
> 
> 
> _______________________________________________
> Portugal mailing list
> [email protected]
> http://lists.osgeo.org/mailman/listinfo/portugal
> 
> 
> _______________________________________________
> Portugal mailing list
> [email protected]
> http://lists.osgeo.org/mailman/listinfo/portugal
_______________________________________________
Portugal mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/portugal

Responder a