thanks, solved my problem

2010/6/4 mdipierro <mdipie...@cs.depaul.edu>

> In this
>
>              try:
>                  #1
>              except:
>                  # 2
>
> if #1 fails because it violates a constraint, than you need to
> rollback before you can access the database again.
> Try this:
>
>              try:
>                  #1
>                  db.commit()
>              except:
>                  db.rollback()
>                  # 2
>                  db.commit()
>
> It is not a good idea to use try...except in database operations
> anyway.
>
>
> On Jun 3, 5:05 pm, mmartinez <alexra...@gmail.com> wrote:
> > Good afternoon, my question is this, there is a postgres sql query
> > that does not work, I am doing the query q is:
> >
> > for r in rws:
> >               try:
> >                   db.ratecltes.insert(id_rutas=r.rutas.id,
> > id_clte=r.clientes.id, rate=r.rutaproveedor.valor)
> >               except:
> >                   # # # HERE IS THE ERROR # # #
> >                   query=((db.ratecltes.id_rutas==r.rutas.id) &
> > (db.ratecltes.id_clte==r.clientes.id))
> >                   db(query).update(rate=int(r.rutaproveedor.valor))
> >
> > Web2py The message sent is as follows.
> >
> >  File "/home/marcelo/web2py/applications/administrador/controllers/
> > default.py", line 1087, in cargar_tarifas
> >     db(query).update(rate=int(r.rutaproveedor.valor))
> >   File "/home/marcelo/web2py/gluon/sql.py", line 3285, in update
> >     self._db._execute(query)
> >   File "/home/marcelo/web2py/gluon/sql.py", line 958, in <lambda>
> >     self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
> > InternalError: transacción abortada, las órdenes serán ignoradas hasta
> > el fin de bloque de transacción
> >
> > PostgreSQL modify the settings to see the log_statement = all, and
> > this is the result:
> >
> > 2010-06-03 16:31:52 CLT ERROR:  transacción abortada, las órdenes
> > serán ignoradas hasta el fin de bloque de transacción
> > 2010-06-03 16:31:52 CLT SENTENCIA:  UPDATE ratecltes SET rate=60.0
> > WHERE (ratecltes.id_rutas=1 AND ratecltes.id_clte=3);
> > 2010-06-03 16:32:51 CLT WARNING:  ya hay una transacción en curso
> > 2010-06-03 16:32:51 CLT WARNING:  ya hay una transacción en curso
> > 2010-06-03 16:32:54 CLT WARNING:  ya hay una transacción en curso
> > 2010-06-03 16:33:00 CLT WARNING:  ya hay una transacción en curso
> > 2010-06-03 16:33:00 CLT ERROR:  llave duplicada viola restricción de
> > unicidad «ratecltes_ndx»
> > 2010-06-03 16:33:00 CLT SENTENCIA:  INSERT INTO ratecltes(id_rutas,
> > id_clte, rate) VALUES (1, 3, 60.0);
> > 2010-06-03 16:33:00 CLT ERROR:  transacción abortada, las órdenes
> > serán ignoradas hasta el fin de bloque de transacción
> > 2010-06-03 16:33:00 CLT SENTENCIA:  UPDATE ratecltes SET rate=60.0
> > WHERE (ratecltes.id_rutas=1 AND ratecltes.id_clte=3);
> >
> > I hope I can help, not that I'm failing.
>

Reply via email to