Foros del Web » Programando para Internet » Python »

Problema Python (error en mysql al actualizar)

Estas en el tema de Problema Python (error en mysql al actualizar) en el foro de Python en Foros del Web. Hola soy nueva en el foro y stoy en los primeros inicios de programacion en python tengo un error en un programa al actualizar un ...
  #1 (permalink)  
Antiguo 05/10/2011, 22:11
 
Fecha de Ingreso: octubre-2011
Ubicación: Mexico
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Problema Python (error en mysql al actualizar)

Hola soy nueva en el foro y stoy en los primeros inicios de programacion en python tengo un error en un programa al actualizar un registro me muestra el siguiente error:

Código:
 Traceback (most recent call last):
  File "C:\Users\VIANEY\Desktop\TITULACION\ejemplo tutorial\CatalogoDePeliculas\controladores\controladorEditorDePelicula.py", line 63, in onModificarPelicula
    self.app.modelo.modificarPelicula(self.idPelicula, infoPelicula.getTitulo(),infoPelicula.getAnio())
  File "C:\Users\VIANEY\Desktop\TITULACION\ejemplo tutorial\CatalogoDePeliculas\modelo.py", line 45, in modificarPelicula
    self.cursor.execute("UPDATE tblPeliculas SET TituloPelicula='"+ titulo_pelicula +"',Anio=" + str(anio)+  "WHERE IDPelicula=" + str(id_pelicula))
  File "C:\Python25\lib\site-packages\MySQLdb\cursors.py", line 166, in execute
    self.errorhandler(self, exc, value)
  File "C:\Python25\lib\site-packages\MySQLdb\connections.py", line 35, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDPelicula=19' at line 1")

Esta es la parte del codigo donde esta la actualizacion

Código:
def modificarPelicula(self, id_pelicula, titulo_pelicula, anio):
  self.conectar()
  print "daots",id_pelicula,titulo_pelicula, anio
  self.cursor.execute("UPDATE tblPeliculas SET TituloPelicula='"+ titulo_pelicula +"',Anio=" + str(anio)+  "WHERE IDPelicula=" + str(id_pelicula))
  self.desconectar()

  Publisher.sendMessage("pelicula_modificada", None)
Cualquier cometario sera d ayuda

Nota: Stoy utilizando python 2.5.2, wamp, wxpython
  #2 (permalink)  
Antiguo 05/10/2011, 22:20
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema Python (error en mysql al actualizar)

Respuesta rápida:
Código:
self.cursor.execute("UPDATE tblPeliculas SET TituloPelicula='"+ titulo_pelicula +"',Anio=" + str(anio)+  " WHERE IDPelicula=" + str(id_pelicula))
Respuesta larga:
Nunca, pero nunca hagas ese tipo de queries son horribles de leer y ademas son vulnerables a un ataque de SQLInjection.

Lo mas recomendable es usar queries parametrizadas que son muy fáciles de usar.

Ejemplo
Código Python:
Ver original
  1. self.cursor.execute("UPDATE tblPeliculas SET TituloPelicula=%s, Anio=%s WHERE IDPelicula=%s", (titulo_pelicula, anio, id_pelicula))
  #3 (permalink)  
Antiguo 05/10/2011, 22:35
 
Fecha de Ingreso: octubre-2011
Ubicación: Mexico
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema Python (error en mysql al actualizar)

Gracias x tu respuesta razpeita lo tomare en cuenta y cambiare los queries por los parametrizados, la vdad no stoy muy familiarizada con ste lenguaje y se me ha complicado relizar un ABCM
  #4 (permalink)  
Antiguo 06/10/2011, 06:50
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema Python (error en mysql al actualizar)

Cita:
Iniciado por lovemvcl Ver Mensaje
la vdad no stoy muy familiarizada con ste lenguaje y se me ha complicado relizar un ABCM
En realidad el consejo que te da razpeitia no es solamente para Python sino para programación en general. Cualquier lenguaje puede ser vulnerable a Inyección de SQL (y otros tipos de fallos también) si utiliza consultas interpolando cadenas.

El problema en tu consulta original parece ser la falta de un espacio luego de "anio" y antes de "WHERE". Ante la duda lo mejor habría sido generar la cadena e imprimirla con "print" antes de hacer la consulta.

Recordá siempre hacer comprobación de errores en tus programas


Saludos.
  #5 (permalink)  
Antiguo 07/10/2011, 15:55
 
Fecha de Ingreso: octubre-2011
Ubicación: Mexico
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Problema Python (error en mysql al actualizar)

Gracias x tu comentario agregare el espacio k falta.

Saludos

Etiquetas: mysql, wxpython
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 11:22.