Thread: [SQLObject] PickleCol with protocol2 (binary)
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: sophana <so...@zi...> - 2006-08-26 21:00:33
|
Hi Simply found that the PickleCol has an argument pickleProtocol that is not used. I tried the following patch: In PickleValidator class def from_python(self, value, state): if value is None: return None - return pickle.dumps(value) + return pickle.dumps(value,protocol=self.pickleProtocol) I need that because without protocol 2, I cannot store sqlobjects in pickleCol... I know there is a workaround, but it would be cool to have that. However this does not work because when reading back the object, I get an error saying that the 'ascii' codec can't decode a specific byte. Seems that the pickleCol uses BlobCol and mysql returns unicode... SqlObject version is 0.7.0 Regards Sophana |
From: Oleg B. <ph...@ma...> - 2006-08-27 10:07:32
|
On Sat, Aug 26, 2006 at 11:06:28PM +0200, sophana wrote: > + return pickle.dumps(value,protocol=self.pickleProtocol) > > However this does not work because when reading back the object, I get > an error saying that the 'ascii' codec can't decode a specific byte. > Seems that the pickleCol uses BlobCol and mysql returns unicode... Yes, a known problem. Any idea how to stop MySQL to convert BLOBs to unicode? BTW, is it MySQL server, libmysql client, or MySQLdb DB API driver who does the conversion? Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Oleg B. <ph...@ph...> - 2006-10-23 16:17:07
|
Hi! On Sat, Aug 26, 2006 at 11:06:28PM +0200, sophana wrote: > I tried the following patch: In PickleValidator class > > def from_python(self, value, state): > if value is None: > return None > - return pickle.dumps(value) > + return pickle.dumps(value,protocol=self.pickleProtocol) > > I need that because without protocol 2, I cannot store sqlobjects in > pickleCol... > I know there is a workaround, but it would be cool to have that. > > However this does not work because when reading back the object, I get > an error saying that the 'ascii' codec can't decode a specific byte. > Seems that the pickleCol uses BlobCol and mysql returns unicode... > > SqlObject version is 0.7.0 Does it work with SQLObject 0.7.1 + the latest patches for MySQLdb+unicode? Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: sophana <so...@zi...> - 2006-10-23 21:03:05
|
Oleg Broytmann a =E9crit : > Hi! > > On Sat, Aug 26, 2006 at 11:06:28PM +0200, sophana wrote: > =20 >> I tried the following patch: In PickleValidator class >> >> def from_python(self, value, state): >> if value is None: >> return None >> - return pickle.dumps(value) >> + return pickle.dumps(value,protocol=3Dself.pickleProtocol) >> >> I need that because without protocol 2, I cannot store sqlobjects in >> pickleCol... >> I know there is a workaround, but it would be cool to have that. >> >> However this does not work because when reading back the object, I get >> an error saying that the 'ascii' codec can't decode a specific byte. >> Seems that the pickleCol uses BlobCol and mysql returns unicode... >> >> SqlObject version is 0.7.0 >> =20 > > Does it work with SQLObject 0.7.1 + the latest patches for MySQLdb+u= nicode? > > Oleg. > =20 I removed all sqlobjects from my pickle cols. I will try to write a small test for that one day. I'm really very busy on my project. Sorry. However, storing sqlobjects inside a pickle col is not always a good idea. When you want to delete an object, you can't search in these pickled object if there is an occurence of it... I liked to do it because the schema evolution was difficult. Now with my small helper routine, I can add cols easily and even set a default value. I'm trying not to use pickle anymore. |
From: Oleg B. <ph...@ph...> - 2006-10-24 08:26:15
|
On Mon, Oct 23, 2006 at 11:03:36PM +0200, sophana wrote: > >> + return pickle.dumps(value,protocol=self.pickleProtocol) > >> > > Does it work with SQLObject 0.7.1 + the latest patches for MySQLdb+unicode? > > > I'm trying > not to use pickle anymore. Ok, I see. Lets close the issue. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |