Acabei conseguindo com um pouco (bem pouco :) mais de Python (claro) ;D Ficou assim:
''' Atualiza campos arbitrários da tabela pessoa e info ''' for key in orig.keys(): if not dados[key] == orig[key]: dados['campo'] = key dados['dados'] = dados[key] context.zsql_update_campo(dados) E o ZSQL: # idpessoa # campo # dados UPDATE pessoa LEFT JOIN info ON pessoa_idpessoa=<dtml-sqlvar idpessoa type=string> SET <dtml-var campo> = <dtml-sqlvar dados type=string> WHERE <dtml-sqltest idpessoa type=string> A relação das tabelas aqui é 1:1 . Agora vou começar a fuçar nas tabelas 1:n e m:n . Desejem-me sorte! =D -- Paul Eipper Em 09/02/07, Paul Eipper<[EMAIL PROTECTED]> escreveu: > Olá! > > Estou fazendo um formulário para atualizar os dados no banco de dados. > O form passa as alterações para um script Python que por sua vez deve > chamar os métodos ZSQL adequados. > > O problema é que não estou conseguindo flexibilizar os métodos ZSQL > como eu queria. > > Algo assim: > > A pessoa altera os campos nome e endereço em uma tabela com diversos > campos. Eu queria fazer a comparação no Python para ver que estes > campos foram alterados e mandar o ZSQL alterar somente eles, algo > assim: > > orig = dados do formulário originais > dados = dados novos > > for key in orig.keys(): > if not dados[key] == orig[key]: > dados['campo'] = key > context.zsql_update_campo(dados) > > Mas não consigo fazer um ZSQL que faça UPDATE no campo variável ali. > Alguém tem alguma idéia? > > Algo como: > UPDATE tabela SET <dtml-var campo> = <dtml-sqlvar <dtml-var campo> > type=string> > > > Mas acho que não funciona assim, heh. > > A alternativa de ter um ZSQL para cada campo é horrível e, portanto, > impensável :-P > > > -- > Paul Eipper >