convertir campos string en numericos.

Ariel Nardelli pan_python en yahoo.com.ar
Mie Mayo 26 19:04:57 CEST 2004


Hola Chema

Si por lo que veo puedo hacerlo por try y tambien con strip.

Yo estube haciendo pruebas y por el momento con mysql me reacciona como 
vos pusiste.

Ahora (y cambiando de tema) veo que puedo usar tambien el try para 
comprobar que lo que envie por sql se halla hecho o si hay error que me 
reporte para poder despues hacer un manejo del error..

Usando mysql como puedo saber que error se produjo al hacer un select o 
insert o update? para teniendo el nro de error o la descripcion hacer lo 
que corresponda?

Hasta el momento cuando mando a grabar algo "confio" en el motor  y no 
hago ningun tipo de control sobre eso..

Como se hace?

Como siempre, MIL GRACIAS!!

Ariel

Chema Cortés wrote:

>El Miércoles, 26 de Mayo de 2004 08:30, Ariel Nardelli escribió:
>
>  
>
>>Para convertirlos utilizo la funcion int y me los pasa a numericos y los
>>grabo perfectamente.
>>PERO, cuando el campo origen me viene vacio o sea no viene con numeros o
>>sea viene '     ' el int me da error y me para el programa...
>>    
>>
>
>Ya te han respondido que puedes usar el try..except para lo que quieres, pero 
>si luego vas a construir una sentencia SQL no deberías preocuparte tanto por 
>ello y dejar al motor de la base de datos que trabaje con el dato:
>
>create temporary table prueba (dato integer NULL);
>insert into prueba values (0), ('2'),('   '),('asdfasd'), (NULL);
>select * from prueba;
>
>+------+
>| dato |
>+------+
>|    0 |
>|    2 |
>|    0 |
>|    0 |
>| NULL |
>+------+
>
>Se ve que el mysql interpreta por defecto las strings que no entiende como 
>ceros, incluso la string '    ' que te daba problemas.
>
>Pero siendo estrictos, cuando un campo numérico en dbase está vacío lo 
>correcto sería interpretarlo como 'Sin valor', lo que en SQL se entiende como 
>NULL. La DB-API de python identifica NULL con el singleton '(None,)':
>
>NULL=(None,)
>sql="insert into dato values (%s)"
>if not dato.strip():
>    dato=NULL
>cur.execute(sql, dato)
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>




Más información sobre la lista de distribución Python-es