Re: [SQLObject] classregistry and multiple imports
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Carlos R. <car...@gm...> - 2005-01-08 15:37:21
|
On Sat, 8 Jan 2005 15:38:42 +0100 (CET), Philippe Normand <ph...@re...> wrote: > > Hi > > I've got a little issue with sqlo svn trunk. There's a module > AlineaArticle storing one SQLObject declaration and i have to import it > from multiple places. When i do so, sqlo raises a ValueError: > > ValueError: class AlineaArticle is already in the registry (other class > is <class 'Alinea.Articles.AlineaArticle.AlineaArticle'>, from the > module Alinea.Articles.AlineaArticle in > /home/phil/devel/alinea/Alinea/Articles/AlineaArticle.py; attempted new > class is <class 'Articles.AlineaArticle.AlineaArticle'>, from the > module Articles.AlineaArticle in > /home/phil/devel/alinea/Alinea/Articles/AlineaArticle.pyc) > > Seems like the .py and the .pyc try to register the SQLObject in their > corner. That's weird, has anyboday ever had the same problem ? I had the same issue. I don't think that this is a problem with SQLObject itself; it depends a lot on the way you write your code. Loading the same module twice with a simple "import" should not be a problem, but anything that runs the code more than once will make it fail. I believe that this can be triggered in some situations: - by a reload() call, which makes the module code to be re-executed. - by importing the same module from different locations, in such a way that the internal module cache used by Python isn't able to tell that the module was actually imported before. In this case the module code is effectively run twice, which may also trigger the problem. I solved the issue in my own code by putting all my SQLObject declarations inside a class that is guaranteed to be instantiated only once, as a singleton. But this solution will not work for everyone; it was actually more of a design choice in my own case, dicted not only by SQLObject, but also because of other architectural concerns. You could try something along these lines, too, if it suites your needs. -- Carlos Ribeiro Consultoria em Projetos blog: http://rascunhosrotos.blogspot.com blog: http://pythonnotes.blogspot.com mail: car...@gm... mail: car...@ya... |