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. 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?

>>> c.AnotherThing.__table__.foreign_keys
OrderedSet([])
>>> import b
>>> b.Something.__table__.foreign_keys
OrderedSet([])
>>> import a
>>> a.Something.__table__.foreign_keys
OrderedSet([])

--
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