On Jul 22, 4:51 pm, Michael Bayer <[EMAIL PROTECTED]> wrote:
> On Jul 22, 2008, at 6:50 AM, Erez wrote:
>
>
>
>
>
>
>
> > Hi,
> > I apologize in advance if this is a newbie question, but this is
> > pretty wierd and I couldn't find an answer in the docs.
>
> > I have these two "tables":
>
> > class Node(Base):
> > __tablename__ = 'nodes'
>
> > id = Column(Integer, primary_key=True)
> > name = Column(String)
>
> > class Link(Base):
> > __tablename__ = 'links'
>
> > node_id = Column(Integer, ForeignKey('nodes.id'))
>
> > id = Column(Integer, primary_key=True)
> > type = Column(String)
> > fro = relation(Node, order_by=Node.id, backref="links_out")
> > to = relation(Node, order_by=Node.id, backref="links_in")
>
> > Just to clarify, I want each link to appear in the "links_out" of its
> > from-node, and in the links_in of it's to-node.
>
> > This works just fine when I create the classes, but once I commit the
> > changes into a session, everything gets messed up (maybe the links_in
> > and links_out aren't seperated as I would expect).
>
> > A quick example:
> >>>> sqlalchemy.__version__
> > '0.5.0beta2'
> >>>> cat = Node()
> >>>> cat.name = "cat"
> >>>> animal = grm.Node()
> >>>> animal.name = "animal"
> >>>> link = Link()
> >>>> link.type = "is a"
> >>>> link.fro = cat
> >>>> link.to = animal
> >>>> link
> > #cat >is a> #animal
> >>>> session.add(cat)
> >>>> session.add(animal)
> >>>> session.add(link)
> >>>> session.commit()
> >>>> link
> > #animal >is a> #animal
>
> you have only one foreign key to the "nodes" table, but two
> relations. How can a single row in "links" maintain two separate
> references to both "fro" and "to" ?
So how would you solve it?
I tried defining two foriegn keys:
class Link(Base):
__tablename__ = 'links'
node_id = Column(Integer, ForeignKey('nodes.id'))
node_id2 = Column(Integer, ForeignKey('nodes.id'))
id = Column(Integer, primary_key=True)
type = Column(String)
fro = relation(Node, order_by=node_id, backref="links_out")
to = relation(Node, order_by=node_id2, backref="links_in")
but got:
sqlalchemy.exc.ArgumentError: Could not determine join condition
between parent/
child tables on relation Link.fro. Specify a 'primaryjoin'
expression. If this
is a many-to-many relation, 'secondaryjoin' is needed as well.
Is a primaryjoin necessary then?
I've tried to look-up the solution, but couldn't find any.
Thanks!
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---