Foros del Web » Programando para Internet » Python »

TypeError

Estas en el tema de TypeError en el foro de Python en Foros del Web. File "C:\workspace\SMERP\src\core\Afiliado.py", line 164, in Save int(self.ObraSocial) TypeError: %d format: a number is required, not unicode No se porque me tira este error le estoy ...
  #1 (permalink)  
Antiguo 04/01/2011, 12:22
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 1 mes
Puntos: 0
TypeError

File "C:\workspace\SMERP\src\core\Afiliado.py", line 164, in Save
int(self.ObraSocial)
TypeError: %d format: a number is required, not unicode

No se porque me tira este error le estoy pasando el valor '2'

self.ObraSocial es igual a 2... en Linux funciona correctamente la funcion y cuando lo pruebo en windows no anda!!

que puede ser?

saludos
  #2 (permalink)  
Antiguo 04/01/2011, 16:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: TypeError

sin ver el código es imposible adivinar, pega la línea 164
  #3 (permalink)  
Antiguo 04/01/2011, 19:13
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: TypeError

Código:
sql = """Insert Into Afiliados (Matricula,Nombre,Tipo,Titular,DOCT,DOCN,Direccion,CP,Ciudad,Provincia,
         Tel1,Tel2,Email,Habilitado,EstadoC,Categoria,Nacionalidad,Observaciones,FechaIng,ObraSocial) 
            VALUES ('%s',%d,%d,%d,%d,'%s','%s','%s',%d,'%s','%s','%s',%d,%d,%d,'%s','%s','%s','%s', %d)
            """ %(self.Matricula,
                  self.Nombre,
                  int(self.Tipo),
                  int(self.Titular),
                  int(self.DOCT),
                  int(self.DOCN),
                  self.Direccion,
                  self.CP,
                  self.Ciudad,
                  int(self.Provincia),
                  self.Tel1,
                  self.Tel2,
                  self.Email,
                  int(self.Habilitado),
                  int(self.EstadoC),
                  int(self.Categoria),
                  self.Nacionalidad,
                  self.Observaciones,
                  self.FechaIng,
                  self.FechaNac,
                  int(self.ObraSocial))
la pegue la linea es :
int(self.ObraSocial)

y el valor de self.ObraSocial es '2' tambien probe hacer int(2) ahi y me da el mismo error
  #4 (permalink)  
Antiguo 05/01/2011, 16:15
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: TypeError

Hmmm es extraño, tanto en Windows como en Linux esto funciona:

print "%d" % int(unicode('2'))
print "%d" % int(unicode(2))

La única forma en la que veo el mismo error que tu es haciendo algo como

print "%d" % unicode(2)
print "%d" % u'2'


Saludos.
  #5 (permalink)  
Antiguo 07/01/2011, 14:30
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: TypeError

Es que en ningun momento estoy usando unicode, a menos que la base de datos lo esto pasando en unicode? en windows nomas me tira el error!

este windows me tiene podrido.
  #6 (permalink)  
Antiguo 10/01/2011, 07:34
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: TypeError

yo antes que nada haría

type(self.ObraSocial)

por las dudas, para saber qué tipo es. No sea cosa que venga con un tipo "raro" de la bbdd.


saludos.
  #7 (permalink)  
Antiguo 11/01/2011, 17:11
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: TypeError

Observaciones: No formates cadenas de esa manera de lo contrario un SQL Injection es inminente en ese programa.

Nombre esta como %d, y matricula como %s.

Etiquetas: Ninguno
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 16:00.