Well the problem is this functionality will be part of SQLAlchemy-Continuum 
(versions relationships for entities using join table inheritance). It 
would be ugly if an extension for SQLAlchemy would throw warnings for 
certain mapper scenarios.

Also I'm using warnings.simplefilter('error', sa.exc.SAWarning) on every 
project, since in general I want my tests and code to fail if some part of 
SQLAlchemy throws a warning.

- Konsta


On Thursday, April 10, 2014 11:41:55 PM UTC+3, Michael Bayer wrote:
>
> what happens if you just ignore the warning?  i think it might work anyway:
>
> from sqlalchemy import *
> from sqlalchemy.orm import *
> from sqlalchemy.ext.declarative import declarative_base
>
> Base = declarative_base()
>
> class A(Base):
>     __tablename__ = 'a'
>
>     id = Column(Integer, primary_key=True)
>
>     d = relationship("D")
>
> class B(A):
>     __tablename__ = 'b'
>
>     id = Column(ForeignKey('a.id'), primary_key=True)
>
>     d = relationship("D", collection_class=set)
>
> class C(A):
>     __tablename__ = 'C'
>
>     id = Column(ForeignKey('a.id'), primary_key=True)
>
>     d = relationship("D", collection_class=set)
>
> class D(Base):
>     __tablename__ = 'd'
>
>     id = Column(Integer, primary_key=True)
>     aid = Column(ForeignKey('a.id'))
>
> e = create_engine("sqlite://", echo=True)
> Base.metadata.create_all(e)
>
> sess = Session(e)
>
> b1 = B()
> a1 = A()
> a1.d.append(D())
> b1.d.add(D())
> sess.add_all([a1, b1])
> sess.commit()
>
> print a1.d
> print b1.d
>
>
>
> On Apr 10, 2014, at 8:41 AM, Konsta Vesterinen 
> <[email protected]<javascript:>> 
> wrote:
>
> Hi,
>
> I have a situation where I have three classes A, B and C with B and C 
> inheriting class A. 
>
> Now each of these classes also has a version class, lets call them 
> AVersion, BVersion and CVersion. The inheritance tree is the same: BVersion 
> and CVersion inherit AVersion. What I want to achieve is A having 
> relationship to AVersion, B having a relationship to BVersion and C having 
> a relationship to CVersion. I ran into problems when trying to name these 
> relationships with same name 'versions'.
>
> The problem is this causes a naming collision:
>
> SAWarning: Property A.versions on Mapper|B|b being replaced with new 
> property B.versions; the old property will be discarded
>
> How can I achieve this with keeping the relationship names on all classes 
> as 'versions'? The relationship on all classes can be viewonly, hence this 
> shouldn't have any effect on session dependency processing. 
>
> -- 
> 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 [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to