On Feb 8, 2012, at 6:06 PM, Stefan Urbanek wrote:
> Hi,
>
> I am trying to create a simple many-to-many relationship using
> PostgreSQL in a specific schema ('cards'). I do it like this:
>
> class BaseObject(object):
> id = Column(Integer, primary_key=True)
> date_created = Column(DateTime)
> date_modified = Column(DateTime)
>
> collection_cards = Table(
> 'collection_cards', Base.metadata,
> Column('card_id', Integer, ForeignKey('cards.id')),
> Column('collection_id', Integer, ForeignKey('collections.id'))
> )
>
> class Card(Base, BaseObject):
> __tablename__ = 'cards'
>
> content = Column(Text)
>
> def __init__(self):
> super(Card, self).__init__()
>
> class Collection(BaseObject, Base):
> __tablename__ = 'collections'
>
> name = Column(String)
>
> def __init__(self):
> super(Collection, self).__init__()
>
> cards = relationship(Card, secondary=collection_cards)
>
> ...
>
>
> Base.metadata.schema = "cards"
> Base.metadata.create_all(engine)
>
> and I get:
>
> sqlalchemy.exc.NoReferencedTableError: Foreign key associated with
> column 'collection_cards.card_id' could not find table 'cards' with
> which to generate a foreign key to target column 'id'
>
> Without the relationsip, the two tables are created just fine in the
> specified schema. What I am doing wrong?
What happens if you just go with the traditional approach of "schema" per
table, foreign key specified as "cards.cards.id" ? I don't know that
metadata.schema is going to work with assignment after the fact like that.
It's a little used feature, currently
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.