Hi Simon,

I've read and I've tried a number of what is written but I still can't
solve it.

I've done this:

class RelationshipsModel(db.Model):
    __tablename__ = 'relationships'

    source_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    target_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    strength = db.Column(db.Integer, nullable=False)

    source_node = relationship("NodesModel")
    target_node = relationship("NodesModel")

class NodesModel(db.Model):
    __tablename__ = 'nodes'

    id = db.Column(db.BigInteger, primary_key=True)
    project_uuid = db.Column(UUID(as_uuid=True),
db.ForeignKey('projects.uuid'))
    name = db.Column(db.String(50), nullable=False)
    size = db.Column(db.Integer, nullable=False)

    posts_nodes = relationship("PostsNodesModel", backref="nodes")

Below are all that I"ve tried.

-----

class RelationshipsModel(db.Model):
    __tablename__ = 'relationships'

    source_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    target_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    strength = db.Column(db.Integer, nullable=False)

    source_node = relationship("NodesModel")
    target_node = relationship("NodesModel")

class NodesModel(db.Model):
    __tablename__ = 'nodes'

    id = db.Column(db.BigInteger, primary_key=True)
    project_uuid = db.Column(UUID(as_uuid=True),
db.ForeignKey('projects.uuid'))
    name = db.Column(db.String(50), nullable=False)
    size = db.Column(db.Integer, nullable=False)

    posts_nodes = relationship("PostsNodesModel", backref="nodes")
    relationships_s = relationship("RelationshipsModel",
foreign_keys=["relationships.source_node_id"], backref="nodes")
    relationships_t = relationship("RelationshipsModel",
foreign_keys=["relationships.target_node_id"], backref="nodes")

-----

class RelationshipsModel(db.Model):
    __tablename__ = 'relationships'

    source_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    target_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    strength = db.Column(db.Integer, nullable=False)

class NodesModel(db.Model):
    __tablename__ = 'nodes'

    id = db.Column(db.BigInteger, primary_key=True)
    project_uuid = db.Column(UUID(as_uuid=True),
db.ForeignKey('projects.uuid'))
    name = db.Column(db.String(50), nullable=False)
    size = db.Column(db.Integer, nullable=False)

    posts_nodes = relationship("PostsNodesModel", backref="nodes")
    relationships_s = relationship("RelationshipsModel",
foreign_keys=["relationships.source_node_id"], backref="nodes")
    relationships_t = relationship("RelationshipsModel",
foreign_keys=["relationships.target_node_id"], backref="nodes")

-----

class RelationshipsModel(db.Model):
    __tablename__ = 'relationships'

    source_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    target_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
primary_key=True)
    strength = db.Column(db.Integer, nullable=False)

class NodesModel(db.Model):
    __tablename__ = 'nodes'

    id = db.Column(db.BigInteger, primary_key=True)
    project_uuid = db.Column(UUID(as_uuid=True),
db.ForeignKey('projects.uuid'))
    name = db.Column(db.String(50), nullable=False)
    size = db.Column(db.Integer, nullable=False)

    posts_nodes = relationship("PostsNodesModel", backref="nodes")
    relationships_s = relationship("RelationshipsModel",
foreign_keys=["relationships.source_node_id"], backref="nodes")
    relationships_t = relationship("RelationshipsModel",
foreign_keys=["relationships.target_node_id"], backref="nodes")

I've also tried using

    relationships = relationship("RelationshipsModel",
                                 foreign_keys="[NodesModel.source_node_id,
NodesModel.target_node_id]",
                                 backref="nodes")

Any other codes that I haven't tried?

Desmond

On Wed, 29 May 2019 at 17:30, Simon King <si...@simonking.org.uk> wrote:

> On Wed, May 29, 2019 at 10:08 AM Desmond Lim <limwen...@gmail.com> wrote:
> >
> > Hi there,
> >
> > I'm been puzzling over this and still can't find answer.
> >
> > I have 2 tables:
> >
> > Nodes:
> >
> > class NodesModel(db.Model):
> >     __tablename__ = 'nodes'
> >
> >     id = db.Column(db.BigInteger, primary_key=True)
> >     project_uuid = db.Column(UUID(as_uuid=True),
> db.ForeignKey('projects.uuid'))
> >     name = db.Column(db.String(50), nullable=False)
> >     size = db.Column(db.Integer, nullable=False)
> >
> >     posts_nodes = relationship("PostsNodesModel", backref="nodes")
> >     relationships = relationship("RelationshipsModel", backref="nodes")
> >
> > Relationships:
> >
> > class RelationshipsModel(db.Model):
> >     __tablename__ = 'relationships'
> >
> >     source_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
> primary_key=True)
> >     target_node_id = db.Column(db.BigInteger, db.ForeignKey('nodes.id'),
> primary_key=True)
> >     strength = db.Column(db.Integer, nullable=False)
> >
> > I'm getting errors on this line:
> >
> > relationships = relationship("RelationshipsModel", backref="nodes")
> >
> > And I know it is because my Relationships table has the Nodes table as a
> foreign key twice. But I have not idea how do I create 2 relationships to
> the Relationships table?
> >
>
> I assume the error you are getting is something like "Could not
> determine join condition..."? In which case, you probably need this
> section of the docs:
>
>
> https://docs.sqlalchemy.org/en/13/orm/join_conditions.html#handling-multiple-join-paths
>
> Hope that helps,
>
> Simon
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and
> Verifiable Example.  See  http://stackoverflow.com/help/mcve for a full
> description.
> ---
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sqlalchemy/CAFHwexczSoXe-GCrfDB%2BD6tisADXkz1EBqtjhyMz2La58tL7yw%40mail.gmail.com
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/CAM%2BCzagRsw1v8hntqHWRWkKO3MBdb7h_o7qg0zetgEqnEHw1bQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to