Buenas tardes a todos.
Bueno estoy trabajando con web2py y postgres quiero hacer un update
pero no puedo, tengo el siguiente codigo:
def cargar_tarifas():
id_cliente= None
a=db.clientes
rws=None
clte=[]
rows = db().select(db.clientes.ALL)
for cliente in rows:
clte.append(cliente.rsocial)
form=FORM(TABLE(TR("Cliente:",SELECT(clte,_name="clte",requires=IS_IN_SET(clte))),
INPUT(_type='submit',_value='Aceptar')))
submit = form.element(_type="submit")
submit["_onclick"] = "return confirm('Desea cargar tarifas de
costo?? ');"
if form.accepts(request.vars,session):
for clite in rows:
if clite.rsocial==form.vars.clte:
id_cliente=
clite.id
query=(
db.clientes.id==id_cliente)
left=(db.rutaproveedor.on(
db.rutas.id==db.rutaproveedor.id_rutas),
db.clientes.on(db.rutaproveedor.id_tarifa==db.clientes.id_tarifa))
rws = db(query).select(
db.rutas.id,
db.clientes.id, db.rutaproveedor.valor,orderby=
db.rutas.id,
left=left,distinct=True)
break
for r in rws:
try:
db.ratecltes.insert(id_rutas=
r.rutas.id,
id_clte=
r.clientes.id, rate=r.rutaproveedor.valor)
except:
query=((db.ratecltes.id_clte==
r.clientes.id) &
(db.ratecltes.id_rutas==
r.rutas.id))
db(query).update(id_rutas=
r.rutas.id,
id_clte=
r.clientes.id, rate=r.rutaproveedor.valor)
return dict(form=form, rws=rws)
Y este es el error:
Error traceback
Traceback (most recent call last):
File "/home/marcelo/web2py/gluon/restricted.py", line 178, in
restricted
exec ccode in environment
File "/home/marcelo/web2py/applications/administrador/controllers/
default.py", line 1097, in <module>
File "/home/marcelo/web2py/gluon/globals.py", line 96, in <lambda>
self._caller = lambda f: f()
File "/home/marcelo/web2py/gluon/tools.py", line 1910, in f
return action(*a, **b)
File "/home/marcelo/web2py/applications/administrador/controllers/
default.py", line 1087, in cargar_tarifas
db(query).update(id_rutas=
r.rutas.id, id_clte=
r.clientes.id,
rate=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
Les agradeceria mucho si me pueden ayudar o me pueden decir cual es el
error que estoy cometiendo.
Desde ya muchas gracias.