Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Transaction COMMIT/ROLLBACK

Estas en el tema de Transaction COMMIT/ROLLBACK en el foro de Python en Foros del Web. Hola chicos, les presento este error que aparece al traer registros de mi BD, espero me puedan ayudar. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original TransactionManagementError ...
  #1 (permalink)  
Antiguo 06/07/2015, 20:18
Avatar de santiagopm84  
Fecha de Ingreso: marzo-2015
Mensajes: 23
Antigüedad: 9 años, 9 meses
Puntos: 0
Transaction COMMIT/ROLLBACK

Hola chicos, les presento este error que aparece al traer registros de mi BD, espero me puedan ayudar.

Código HTML:
Ver original
  1. TransactionManagementError at /mesa/search-tramite/
  2. Transaction managed block ended with pending COMMIT/ROLLBACK
  3. Request Method: GET
  4. Request URL:    http://127.0.0.1:8000/mesa/search-tramite/?folio_tramite=47400
  5. Django Version: 1.7.8
  6. Exception Type: TransactionManagementError
  7. Exception Value:   
  8. Transaction managed block ended with pending COMMIT/ROLLBACK
  9. Exception Location: /home/dgtic/licenciastab/local/lib/python2.7/site-packages/django/db/backends/__init__.py in leave_transaction_management, line 336
  10. Python Executable:  /home/dgtic/licenciastab/bin/python
  11. Python Version: 2.7.6
  12. Python Path:   
  13. ['/home/dgtic/Documentos/licenciastabasco/licencias',
  14.  '/home/dgtic/Documentos/licenciastabasco/licencias',
  15.  '/home/dgtic/licenciastab/lib/python2.7',
  16.  '/home/dgtic/licenciastab/lib/python2.7/plat-i386-linux-gnu',
  17.  '/home/dgtic/licenciastab/lib/python2.7/lib-tk',
  18.  '/home/dgtic/licenciastab/lib/python2.7/lib-old',
  19.  '/home/dgtic/licenciastab/lib/python2.7/lib-dynload',
  20.  '/usr/lib/python2.7',
  21.  '/usr/lib/python2.7/plat-i386-linux-gnu',
  22.  '/usr/lib/python2.7/lib-tk',
  23.  '/home/dgtic/licenciastab/local/lib/python2.7/site-packages',
  24.  '/home/dgtic/Documentos/licenciastabasco/licencias',
  25.  '/home/dgtic/Documentos/licenciastabasco/licencias/licencias']
  26. Server time:    Lun, 6 Jul 2015 21:15:41 -0500



Mi vista es esta:

Código Python:
Ver original
  1. class SeachTramiteList(APIView,MultasMixin):
  2.     @never_cache
  3.     @transaction.commit_manually
  4.     def get(self,request,*args,**kwargs):
  5.         folio_tramite = request.GET.get('folio_tramite','').strip()
  6.         data = {"success":True,"datos":[],"documento":[]}
  7.         try:
  8.  
  9.             tramiteVW = TramiteVW.objects.get(folio_tramite=folio_tramite)
  10.             #Multas
  11.             try:
  12.                 data['MULTAS'] = self.list_multas({'nombre':tramiteVW.nombre,'ap_paterno':tramiteVW.ap_paterno,'ap_materno':tramiteVW.ap_materno,'folio':tramiteVW.folio_lic_anterior,'curp':tramiteVW.curp,'rfc':tramiteVW.rfc})
  13.             except IOError as iex:
  14.                 print(iex)
  15.                 data['success']=False
  16.                 data['message'] = 'Ocurrio un error al conectarse a infracciones'
  17.                 transaction.rollback()
  18.                 return Response(data, status=status.HTTP_200_OK)
  19.             except Exception as ex:
  20.                 data['success']=False
  21.                 data['message'] = ex.message
  22.                 transaction.rollback()
  23.                 return Response(data, status=status.HTTP_200_OK)
  24.             try:
  25.                 respuesta_pago=self.__validar_pago(folio_tramite)
  26.                 if respuesta_pago['transaccion'][0]==1:
  27.                     data['pagado']=True
  28.                     data['text_pagado']='Pagado'
  29.                 else:
  30.                     data['pagado']=False
  31.                     data['text_pagado']='Sin Pagar'
  32.                 data['importe_total']=respuesta_pago.get('importe_total',0)
  33.                 data['repuesta_pago_id']=respuesta_pago.get('repuesta_pago_id',None)
  34.                 data['tx']=respuesta_pago.get('tx','')
  35.             except Exception as exc:
  36.                 data['pagado']=False
  37.                 data['repuesta_pago_id']=None
  38.                 data['text_pagado']='Error en verificación'
  39.  
  40.  
  41.             serialise = TramiteVwSerializer(tramiteVW)
  42.             try:
  43.                 data["datos"] = serialise.data
  44.             except:
  45.                 data["success"]=False
  46.                 data["message"]='Ocurrio un error al realizar la búsqueda vuelva a intetarlo'
  47.             documentos = tramiteVW.get_documentos()
  48.             serialDocumentos = DocumentoAdjuntoSerializer(documentos,many=True)
  49.             data["documento"]=serialDocumentos.data
  50.  
  51.         except TramiteVW.DoesNotExist:
  52.             data["success"]=False
  53.             data["message"]="No se encontro el folio del trámite"
  54.             transaction.rollback()
  55.         else:
  56.            transaction.commit()
  57.         return Response(data, status=status.HTTP_201_CREATED)
  58.  
  59.     #TODO: MODIFICAL AL TENER LAS OPCIONES DE PAGO
  60.     def __validar_pago(self,folio_tramite):
  61.         data = {"success":True}
  62.         try:
  63.             tramite = Tramite.objects.get(folio_tramite=folio_tramite)
  64.             recibo_pago=RespuestaPago.objects.get(tramite__id=tramite.id, activo=1)
  65.             url = settings.WEBSERVICE_FINANZAS
  66.             client = Client(url)
  67.             fecha=recibo_pago.fecha_generacion_transaccion
  68.             tx=str(fecha.year)+'/'+recibo_pago.numero_transaccion
  69.             data['transaccion']= client.service.consultaTransaccion(tx)
  70.             data['tx']=tx
  71.             data['importe_total']=recibo_pago.importe_total_opca
  72.             data['repuesta_pago_id']=recibo_pago.id
  73.             return data
  74.         except Exception as ex:
  75.             return ex
  #2 (permalink)  
Antiguo 07/07/2015, 09:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Transaction COMMIT/ROLLBACK

Siempre que uses el decorador commit_manually. Debes de hacer commit o rollback yeap, aunque sea solo estés leyendo.

Así que tienes que asegurarte que siempre que entres a tu función haga commit o rollaback.

Tambien puedes usar atomic con la setencia with. https://docs.djangoproject.com/en/1....saction.atomic

Fuente: https://docs.djangoproject.com/en/1....ommit_manually
  #3 (permalink)  
Antiguo 15/07/2015, 17:10
Avatar de santiagopm84  
Fecha de Ingreso: marzo-2015
Mensajes: 23
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Transaction COMMIT/ROLLBACK

Muchas gracias!!!!

Como siempre, oportunos con sus conocimientos y experiencia.

Saludos

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:17.