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
