[Python-es] Como saber el tipo de columna en una base de datos SQLITE

Chema Cortes pych3m4 en gmail.com
Jue Feb 4 14:13:17 CET 2010


El día 4 de febrero de 2010 13:36, Ricardo Cárdenes Medina
<ricardo.cardenes en gmail.com> escribió:

>> Utilizo la libreria "sqlite3" para manejar una base de datos. La cosa es que quiero importar datos desde otra base y necesito saber que tipo de datos es cada columna.
>>
>> Solo llego a saber el nombre de cada columna, pero del tipo (INTEGER, TEXT, etc) nada.
>>
>
> De la documentación de SQLite:
>
>  "SQLite uses a more general dynamic type system. In SQLite, the
> datatype of a value is associated with the value itself, not with its
> container"
>
> así que probablemente no tiene mucho sentido preguntar por el tipo de
> una columna.

En sqlite se habla más de "afinidades" que de tipos de datos.

Aún así, Ramiro debería habernos dado más pistas sobre cómo hace para
obtener los nombres de los campos, porque tenía que estar muy cerca.

Hay dos caminos para obtener los tipos de cada columna:

1) pragma table_info(tabname), propio de sqlite
2) cursor.description, al estilo pythónico de las db-api2



Si no se entiende lo de las "afinidades", una prueba sencilla es
intentar metar un "decimal" en sqlite sin que pierda precisión.



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