Hi Simon, definitely multiple imports is the issue here, however I don't
know how to get rid of it,
let's say I have a module which i named "ormstuff" inside it I have a class
named "mybase", I do have 2 other modules which
are using this class, and to do so I import it in both places. Now this
might just be me skipping the basics, however
if I don't import the mybase in both modules I cannot use it, since it
should throw an undefined variable exception.

2015-03-02 12:47 GMT+01:00 Simon King <si...@simonking.org.uk>:

> On Mon, Mar 2, 2015 at 11:29 AM, Martino Io <martino8...@gmail.com> wrote:
> > Hello, I've been busy writing an application which now has grown
> > considerably, it spans across several packages/modules totalling 200K
> lines
> > of python code.
> > Recently I made some changes to the structure and decided to split
> several
> > classes into separate modules for greater flexibility; the problem I'm
> > facing now
> > is quite strange, before I was using mainly 1 file for all the ORM
> > definitions, but since I split that into several files, I've started to
> get
> > exceptions due to multiple
> > Base objects being defined and no shared mapper to store the metadata.
> I've
> > changed approach and started to import the base from a single module,
> > however given the high number of modules and cross imports I get
> exceptions
> > like:
> >
> > sqlalchemy.exc.InvalidRequestError: Table 'fabrics' is already defined
> for
> > this MetaData instance.  Specify 'extend_existing=True' to redefine
> options
> > and columns on an existing Table object.
> >
> > I  thought that by adding "use_existing" would fix the issue (the mapper
> > will ignore further imports which redefine the objects) but instead got:
> >
> > InvalidRequestError: Multiple classes found for path "Group" in the
> registry
> > of this declarative base. Please use a fully module-qualified path.
> >
> > So going back to the question, if I have a cross dependant package (which
> > imports classes which are ORM classes), how do I avoid the mapper
> > "redefining" a class?
> > Also any advice on best way to structure packages/modules in an ORM use
> case
> > would be appreciated.
> >
>
> extend_existing is almost certainly not what you want here. Each
> mapped class should only be defined in a single place. If you've done
> that, and are still getting this error, it suggests that perhaps your
> Python modules are being imported more than once. Try putting "print
> 'importing module %s' % __name__" before your class definition. If you
> see the output more than once, then the module is being imported
> multiple times under different names.
>
> Hope that helps,
>
> Simon
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sqlalchemy/gExzW1RNF7A/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to