Forzar en sqlite afinidad text para Decimal

Chema Cortes pych3m4 en gmail.com
Mie Mayo 21 10:38:21 CEST 2008


El 2008/5/13 Oswaldo Hernández <listas en soft-com.es>:
> Chema Cortes escribió:
>
>>
>> Era otra alternativa posible, aunque creo que me quedaré con la de
>> especificar "decimal text" en la columna. Me parece raro que no haya
>> ningún modo de configurar globalmente el que no se apliquen las
>> afinidades.
>
> Si es raro, pero me parece haber visto en alguna parte que lo hacen por
> mantener la compatibilidad.
>
> Revisando la definicion de afinidad [1], veo que dice exactamente:
> If the datatype of the column contains any of the strings "CHAR", "CLOB", or
> "TEXT" then that column has TEXT affinity.
>
> por lo no es necesario definir la columna como 'decimal text' en dos
> palabras. Con que contenga 'text' es suficiente, por lo que definiendo el
> tipo como 'textdecimal' o 'decimal_text' funciona.

He encontrado otra solución consistente en almacenar el dato como
"buffer" en lugar de "texto":

def decimal_adapter(dec):
    return buffer(str(dec))

def decimal_converter(buf):
    return Decimal(str(buf))


Sqlite tratará el dato como "blob" almacenándolo tal cuál, sin
intentar convertirlo a numérico.


PD: en lugar de buffer() se podría haber usado sqlite3.Binary()
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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