-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Michael Bayer ha scritto: > > On Oct 11, 2009, at 8:06 AM, Manlio Perillo wrote: > > Hi. > > I have noted a problem when a I try to pickle an instance of > sqlalchemy.engine.base.RowProxy: > > <...> > File "/usr/lib/python2.5/pickle.py", line 306, in save > rv = reduce(self.proto) > File "/usr/lib/python2.5/copy_reg.py", line 76, in _reduce_ex > raise TypeError("a class that defines __slots__ without " > TypeError: a class that defines __slots__ without defining > __getstate__ > cannot be pickled > > > Is this limitation really necessary? > >> a RowProxy has an active handle to the parent Result which in turn has >> an active handle to the DBAPI cursor, and it's data representation is >> that of the DBAPI's cursor row, which itself is only a "dict like >> object" in the general case. The actual data isn't pulled across >> from the DBAPI row until requested - hence the name "Proxy". >
My use case is quite simple; I always call .fetchall from a ResulProxy, so all data is in memory. I don't see any reasons why a RowProxy should not be pickleable in this case. I have tried with SQLAlchemy 0.4.2p3 (the version I'm using in production, and I get this traceback: http://paste.pocoo.org/show/144372/ I have to say that I don't understand the error. > [...] If there is no simple method to pickle a RowProxy, then I should create a custom driver where the BufferedColumnRow is used. I have not checked the sources, is it possible to create a custom database driver as an external plugin? Note that I need to use pickle only in a testing environment, for a web application. The reason is that I have a resource "rendering" function that, in a testing environment, pickle the content of the Mako context dictionary and return it from a WSGI application; then this data is unpickled so that a test case can easily test the application. Thanks Manlio Perillo -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkrR9iUACgkQscQJ24LbaUQRbACgk8d2JLvDpPjWxTXe+WtauJMa iBwAn1CgrjxyKZ9JpwosNYAxf2kfdyCx =Y7g9 -----END PGP SIGNATURE----- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---