我有一个像下面这样的 SQLAlchemy 模型,起初它不起作用(连接问题,然后期待一个标量而不是列表)。我在包含的版本中“修复”了它,但我真的不明白为什么它会这样。
起初我预计那些ForeignKey
sSizes.items
relationship()
不需要显式primaryjoin
的,当我添加它时,SA 开始期待一个标量,我必须显式指定uselist=True
.
为什么这种关系不能自动检测到这些事情中的一个或两个?
class Category(Base):
__tablename__ = 'categories'
pk = Column(String(6), primary_key=True)
class Item(Base):
__tablename__ = 'items'
pk = Column(String(6), primary_key=True)
category_pk = Column(String(6), ForeignKey('categories.pk') )
size = Column(Integer(), nullable=False)
category = relationship('Category', backref=backref('items'))
class Sizes(Base):
__tablename__ = 'sizes'
category_pk = Column(String(6), ForeignKey('categories.pk'),
ForeignKey('items.category_pk'), primary_key=True )
size = Column(Integer(), ForeignKey('items.size'), primary_key=True )
category = relationship('Category', backref=backref('sizes'))
items = relationship('Item',
uselist=True,
primaryjoin="and_(Sizes.category_pk==Item.category_pk, Sizes.size==Item.size)" )