I decided to go ahead and move my pickling to db.py with the following
additions:
import pickle
from gluon.sql import SQLCustomType
serialise = SQLCustomType(type='text',
native='text',
encoder=(lambda x: pickle.dumps(x)),
decoder=(lambda x: pickle.loads(x)))
...
Field ('answer', serialise)
When I try and insert a row I get the following error:
File "E:\projects\workspace\TestEnvoy\web2py\gluon\sql.py", line
1850, in insert
self._db._execute(query)
File "E:\projects\workspace\TestEnvoy\web2py\gluon\sql.py", line
890, in <lambda>
self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
OperationalError: near "S": syntax error
When I had the pickle.dumps/loads calls within a module all worked
fine.
Where I have gone wrong?
On Feb 18, 4:42 am, mdipierro <[email protected]> wrote:
> You should do:
>
> from gluon.sql import SQLCustomType
>
> pickle =
> SQLCustomType(
> type
> ='text',
> native
> ='text',
> encoder = (lambda x:cPickle.dumps(s)),
> decoder = (lambda x: cPikcle.loads(s))
> )
>
> Field('mypickle',pickle)
>
> **** SQLCustomField may disappear in the new DAL in faviour of a more
> customizable mechanism ****
>
> On Feb 17, 9:20 pm, spiffytech <[email protected]> wrote:
>
>
>
> > That would work, calling MY_PICKLE functions everywhere seems like as
> > much work as calling pickle functions. It would be nice if the
> > pickling could be done transparently behind the scenes, so my
> > controller code could be cleaner and less error-prone.
>
> > -Brian
>
> > On Feb 17, 2:34 pm, Thadeus Burgess <[email protected]> wrote:
>
> > > Could you write a function that handles the inserts/selects instead?
>
> > > class MY_PICKLE():
> > > @classmethod
> > > def get(keyname):
> > > pkldump = db(db.pickle_table.keyname == keyname).select().first()
> > > return pickle.loads(pkldump.value)
> > > @classmethod
> > > def save(keyname, value):
> > > pkldump = db(db.pickle_table.keyname == keyname).select().first()
> > > if pkldump:
> > > pkldump.update_record(value=pickle.dumps(value))
> > > else:
> > >
> > > db.picke_table.insert(keyname=keyname,value=pickle.dumps(value))
>
> > > a_list = MY_PICKLE.get("listkey")
>
> > > # do some stuff to list
>
> > > MY_PICKLE.save("listkey", a_list)
>
> > > -Thadeus
>
> > > On Wed, Feb 17, 2010 at 1:20 PM, spiffytech <[email protected]> wrote:
> > > > I'm serializing with Pickle in my app, but it's a hassle to dump/load
> > > > the data every time I mess with it. Is there a way to make the
> > > > serializing happen automatically with DB access?
>
> > > > -Brian
>
> > > > On Feb 17, 1:46 pm, Carl <[email protected]> wrote:
> > > >> thanks Jorge; most helpful in pointing me in the right direction.
>
> > > >> The python to pickle is simply; for example:
> > > >> import pickle
> > > >> flat_retort = pickle.dumps(retort)
>
> > > >> and to unpickle; for example:
> > > >> import pickle
> > > >> options = pickle.loads(rows[0].retort)
>
> > > >> On Feb 17, 3:57 pm, JorgeRpo <[email protected]> wrote:
>
> > > >> > On Feb 17, 10:47 am, Carl <[email protected]> wrote:
>
> > > >> > > I have a Python list that I want to store and retrieve from the
> > > >> > > data
> > > >> > > store.
>
> > > >> > > The individual items of the list are of no use unless used with the
> > > >> > > items of the complete list and there are no use-cases requiring
> > > >> > > searching for a specified list item. The number of items in the
> > > >> > > list
> > > >> > > is between one and fifteen (any more is beyond end users to
> > > >> > > manage).
>
> > > >> > > I'd like to store and retrieve the list in a single field. On
> > > >> > > retrieval the data would be in a Python list object.
>
> > > >> > > What's an approach I can use?
>
> > > >> > serialize
> > > >> > --
> > > >> > sig text
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "web2py-users" 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
> > > > athttp://groups.google.com/group/web2py?hl=en.
--
You received this message because you are subscribed to the Google Groups
"web2py-users" 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.