【发布时间】:2012-06-24 03:06:07
【问题描述】:
我有一个像下面这样的 SQLAlchemy 模型,起初它不起作用(连接问题,然后期望一个标量而不是列表)。我在包含的版本中“修复”了它,但我真的无法理解它为什么会这样。
起初,我预计对于那些 ForeignKeys,Sizes.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)" )
【问题讨论】:
标签: python join orm foreign-keys sqlalchemy