On Oct 5, 2010, at 11:04 AM, Chris Withers wrote:

> Hi All,
> 
> Start off with a base.py module:
> 
> from sqlalchemy.ext.declarative import declarative_base
> Base = declarative_base()
> 
> Now, say we have a module, a.py:
> 
> from sqlalchemy import *
> from base import Base
> 
> class Something(Base):
>    __tablename__ = 'foo'
>    id = Column('id', Integer, primary_key=True)
> 
> ...and another module, b.py:
> 
> from sqlalchemy import *
> from base import Base
> 
> class Something(Base):
>    __tablename__ = 'bar'
>    id = Column('id', Integer, primary_key=True)
> 
> ...and finally, a third module, c.py:
> 
> from sqlalchemy import *
> from sqlalchemy.orm import relationship
> from base import Base
> 
> import a,b
> 
> class AnotherThing(Base):
>    __tablename__ = 'baz'
>    id = Column('id', Integer, primary_key=True)
>    addresses = relationship("Something")
> 
> ...what table will that relationship be to?
> 
> >>> import c
> >>> c.AnotherThing._decl_class_registry['Something']
> <class 'b.Something'>
> 
> I think an exception should be raised if a class name already exists in 
> _decl_class_registry when the assignment is made in _as_declarative.

yeah definitely, though in 0.6 it needs to be a warning to start since some 
folks might be doing this semi-intentionally.


> Are there any cases where it would be legit to have one class override 
> another in _decl_class_registry in this way?
> If the answer is no, I'll commit a test and patch asap...
> 
> cheers,
> 
> Chris
> 
> PS: Also, in the above, how come no foreign keys are created?

theres no usage of ForeignKey() or ForeignKeyConstraint().


-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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.

Reply via email to