convertir campos string en numericos.
Chema Cortés
py en ch3m4.org
Mie Mayo 26 12:06:15 CEST 2004
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)
Más información sobre la lista de distribución Python-es