Hi list,
Sorry if this is trivial, I'm relatively new to sqlalchemy.
I'm trying to set a one to many relationship between class Foo and
class Bar (ie Foo should have a list of Bars). Foo has a composite
primary key.
#################################
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Foo(Base):
__tablename__ = "foo"
one = Column(Integer, primary_key=True)
two = Column(Integer, primary_key=True)
class Bar(Base):
__tablename__ = "bar"
id = Column(Integer, primary_key=True)
one_id = Column(Integer, nullable=False)
two_id = Column(Integer, nullable=False)
ForeignKeyConstraint(["one_id", "two_id"], ["foo.one", "foo.two"])
foo = relationship("Foo", backref = "bars")
metadata = Base.metadata
engine = create_engine('sqlite:///:memory:', echo=True)
metadata.create_all(engine)
from sqlalchemy.orm import sessionmaker
# create a configured "Session" class
Session = sessionmaker(bind=engine)
# create a Session
session = Session()
foo = Foo()
foo.one = 1
foo.two = 2
session.add(foo)
session.commit()
#############################
I get the following message:
sqlalchemy.exc.ArgumentError: Could not determine join condition
between parent/child tables on relationship Bar.foo. Specify a
'primaryjoin' expression.
I tried to change the relationship line to:
foo = relationship("Foo", backref = "bars", primaryjoin=and_(one_id ==
Foo.one, two_id==Foo.two ) )
but then I get this message:
sqlalchemy.exc.ArgumentError: Could not determine relationship
direction for primaryjoin condition 'bar.one_id = foo.one AND
bar.two_id = foo.two', on relationship Bar.foo. Ensure that the
referencing Column objects have a ForeignKey present, or are otherwise
part of a ForeignKeyConstraint on their parent Table.
Thank you for your help!
--
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.