[Python-es] Como saber el tipo de columna en una base de datos SQLITE
Ramiro
rmrsndvl en yahoo.com.ar
Vie Feb 5 02:17:26 CET 2010
>>> 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.
Yo utilizo cursor.description para conocer los nombres de las columnas. Lo malo de eso es que no puede estar vaacía la base.
Pero de los tipos de cada columna ni idea de como sacarla, en la documentación que aparece sobre la librería sqlite3 de python no muestra nada sobre como sacar los tipos de datos.
Usando un programa externo puedo ver de qué tipo es cada columna, así que supongo que desde python se debería poder acceder a esa información.
¿Con "table_info(tabname)" se puede obtener el tipo de datos aparte del nombre?
>Si se usa la BD directamente esa información está en
>`cursor.description` (AFAICR ;o) Para más detalles ver el PEP de DB
>API 2.0 y los metadatos q se «deben» implementar los cursores ;o)
Buscaré por ahí, pero creo no haber visto nada en el PEP ese, solo hablaba de equivalencias entre tipos de la base y python. Pero buscaré de nuevo.
Yahoo! Cocina
Encontra las mejores recetas con Yahoo! Cocina.
http://ar.mujer.yahoo.com/cocina/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100204/15d18aba/attachment.html>
Más información sobre la lista de distribución Python-es