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. >