So I tried it out, and it works great, except for one thing - when I try to use record.as_dict() to get the structure which I can return to a JSON-RPC call which I normally use to communicate with my client, it simply does not return the field. I tried to print it out and I see very clearly that as long as it is a Row object there is no problem, but as soon as I run .as_dict() it disappears. My definitions are as follows:
from gluon.dal import SQLCustomType pickled = SQLCustomType( type = 'text', native = 'text', encoder = (lambda x: pickle.dumps(x)), decoder = (lambda x: pickle.loads(x)) ) then I use db.define_table("my_table", Field("pickled_field", type=pickled) ) but when I fetch the record it does not go to as_dict() (actually I use as_list() but both don't work). Any suggestions? Is there a way to teach as_dict to interpret this field type? Best wishes, Omri On Wed, Jul 25, 2012 at 9:20 PM, howesc <how...@umich.edu> wrote: > For what it is worth i have used custom fields for this type of thing with > great success! > > > On Tuesday, July 24, 2012 8:20:03 AM UTC-7, Anthony wrote: >> >> You could use a SQLCustomType field: http://web2py.com/** >> books/default/chapter/29/6#**Custom-Field-types-(**experimental)<http://web2py.com/books/default/chapter/29/6#Custom-Field-types-%28experimental%29> >> . >> >> Anthony >> >> On Tuesday, July 24, 2012 8:34:07 AM UTC-4, Omri Har-Shemesh wrote: >>> >>> >>> Hi web2pyers, >>> >>> very often, I have a field in the table which has to hold a complicated >>> value (most often numpy arrays). The way I implement it is that I use >>> "text" as the type of field, and then simply pickle.dumps(my_value) when >>> I save the field, and then pickle.loads(value_from_db) to access the >>> field >>> again. >>> >>> My suggestion is simple - create field that automatically pickles the >>> values >>> it gets and unpickles them on extraction. Is this already implemented? >>> Do you have other suggestions on how to implement this so that I won't >>> need >>> to pickle every time I access the table? >>> >>> Best wishes, >>> Omri >>> >> -- > > > > --