one way to get portability is to express it in the supported types:
eg: decimals can be *100 stored in integer


On 25 mei, 07:17, mdipierro <[email protected]> wrote:
> I do not know if this is a good idea and I'd like to hear your
> opinions:
> I have added in trunk to define custom column types
>
> Here is an example of usage:
>
> import cPickle
> from gluon.sql import SQLCustomType
> fromdecimalimportDecimal
>
> decimal= SQLCustomType(native='NUMERIC(10,2)',decoder=(lambda 
> x:Decimal(str(x))))
>
> pickable = SQLCustomType(type='text',encoder=(lambda x:
> "'%s'"%cPickle.dumps(x).replace("'","''")),decoder=(lambda x:
> cPickle.loads(x)))
>
> db.define_table('test',
>    SQLField('my_decimal',type=decimal),
>    SQLField('my_pickle',type=pickable))
>
> the SQLCustomType constructor takes the following arguments:
> - type indicates how web2py sqlform should treat this field
> - native indicates how the database should treat this field
> - encoder indicates how to represent (and escape) a value in SQL
> - decoder indicates how to process the value once it is extracted from
> the database
>
> It seems to work well with migrations. Of course using native=....
> makes the custom table not portable across databases.
>
> The implementation is not very clean but can be improved.
>
> Is this a good idea?
>
> Massimo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to