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
>

Responder a