Olá, Antônio Eu não tenho conhecimento sobre Python, mas acredito que exista algum arquivo de configuração para você modificar as propriedades do nível de isolamento da transação.
Outro detalhe é você entender a diferença de comportamento entre read committed e serializable e ver qual é mais adequada para a sua aplicação. Pelo que entendi o read committed seria o mais adequado. Importante também foi o comentário do Coutinho. O commit é feito por conexão e não por instrução ou seja, se você realizar um commit você vai confirmar todas as instruções SQL que você manipulou dentro da conexão, caso você execute um rollback nenhumas das operações SQL serão realizadas no seu banco. []s 2009/1/29 <[email protected]>: > > é bom vc ver sobre o nivel de isolamento mesmo. mas o commit é por conexao > mesmo e nao por instrução. é possível vc ver isso em várias outras linguagens > porque é como isso funciona realmente no potgresql, por isso não tem como vc > comitar o que esse cursor fez, mas sim tudo que essa conexao fez, uma vez que > vc nao consegue abrir mais de uma transacao por conexao. quando vc conecta, > você abre uma transacao, quando vc dá commit ele efetiva tudo daquela > tranasacao e abre outra em seguida. > > > On Thu, 29 Jan 2009 17:39:52 -0200, Antonio Prado > <[email protected]> wrote: >> Em Qui, 2009-01-29 às 12:31 -0700, [email protected] >> escreveu: >>> >>> >>> On Thu, 29 Jan 2009 17:23:31 -0200, Jota <[email protected]> wrote: >>> > Olá, >>> > >>> > Conforme o Coutinho disse, o psycopg trabalha com o modo auto commit >>> > false, isso significa que você tem que forcar um commit após cada >>> > instrução de modificação (insert/update/delete). >>> > >>> > Desconheco o Python, mas acredito que exista algum arquivo de >>> > configuração para modificar este parâmetro. >>> >>> se nao me engano: >>> connection.auto_commirt = true >> >> >> Creio não ser necessário, pois realizo o commit a cada inserção ou >> alteração, a não ser que exista alguma diferença no comportamento. >> >> O detalhe que observei é que o commit e realizado na conexão e no >> cursor: >> >> conexao.cursor.execute(sql) >> conexao.commit() >> >> >> Talvez eu tenha que realizar no cursor, mas para isto creio que tem a >> haver com o serialize, que não consigo passar como parâmetro ao realizar >> a conexão. >> >> Antonio. >> >> >> >>> >>> :) >>> >>> > >>> > Outra coisa que você poderia verificar é o nível de isolamento de >>> > transação que você está utilizando. Os níveis são read committed >> e >>> > serializable. Você tem como verificar isso? >>> > >>> > []s >>> > >>> > >>> > >>> > 2009/1/29 Antonio Prado <[email protected]>: >>> >> Em Qui, 2009-01-29 às 17:07 -0200, Jota escreveu: >>> >>> Olá, >>> >>> >>> >>> Qual nível de transação você está utilizando? Serializable? >>> >> >>> >> Estou estabelecendo a conexão da seguinte forma: >>> >> conexao = psycopg.connect("host=host dbname=db user=usuario") >>> >> >>> >> Devo acrescentar algum parâmetro? >>> >> >>> >> >>> >> Antonio >>> >> >>> >> >>> >> >>> >>> >>> >>> []s >>> >>> >>> >>> 2009/1/29 Antonio Prado <[email protected]>: >>> >>> > O problema: >>> >>> > >>> >>> > O sistema está aberto em duas seções distintas. >>> >>> > Um usuário realiza uma alteração em um determinado cadastro. >>> >>> > Esta alteração não se torna visível na outra seção, >>> >>> > fazendo-se necessário fechar a aplicação e abrir novamente. >>> >>> > >>> >>> > >>> >>> > A aplicação (Python): >>> >>> > >>> >>> > A conexão com o banco de dados PostgreSQL é realizada utilizando >> o >>> >>> > psycopg, na abertura do aplicativo: >>> >>> > >>> >>> > import psycopg >>> >>> > conexao = psycopg.connect("host=%s dbname=%s user=%s" %(host, >> dbname, >>> >>> > user)) >>> >>> > >>> >>> > >>> >>> > Quando uma rotina realiza um alteração na base de dados: >>> >>> > >>> >>> > conexao.cursor.execute(sql) >>> >>> > conexao.commit() >>> >>> > >>> >>> > >>> >>> > >>> >>> > O que é necessário ser alterado no processo de conexão e >>> > gravação para >>> >>> > que as alterações sejam visualizadas pelas outras conexões? >>> >>> > >>> >>> > >>> >>> > Se alguém pude ajudar, desde já, muito obrigado. >>> >>> > >>> >>> > >>> >>> > >>> >>> > Antonio. >>> >>> > -- >>> >>> > Antonio Prado >>> >>> > (62) 8174 4383 >>> >>> > (62) 3278 0111 >>> >>> > www.antonioprado.eti.br >>> >>> > [email protected] >>> >>> > >>> >>> > >>> >>> > _______________________________________________ >>> >>> > pgbr-geral mailing list >>> >>> > [email protected] >>> >>> > >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> > >>> >>> >>> >>> >>> >>> >>> >> -- >>> >> Antonio Prado >>> >> (62) 8174 4383 >>> >> (62) 3278 0111 >>> >> www.antonioprado.eti.br >>> >> [email protected] >>> >> >>> >> >>> >> _______________________________________________ >>> >> pgbr-geral mailing list >>> >> [email protected] >>> >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >> >>> > >>> > >>> > >>> > >>> >>> _______________________________________________ >>> pgbr-geral mailing list >>> [email protected] >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- João Paulo www.dextra.com.br/postgres PostgreSQL _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
