SQLAlchemy:将多个实例映射到同一行

时间:2014-12-01 16:22:57

标签: python orm sqlalchemy relational-database

考虑多对一关系:文章到关键字。
一篇文章只有一个关键字,单个关键字可以被多篇文章引用。

class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer, primary_key=True)
    keyword_id = Column(Integer, ForeignKey('keyword.id'))
    keyword = relationship("Keyword")

class Keyword(Base):
    __tablename__ = 'keyword'
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False, unique=True)

现在,我希望能够关联具有相同Keyword值的name的多个实例 使用keyword表中的唯一行。

这样就可以保存a1a2

a1 = Article()
a1.keyword = Keyword(name="science")

a2 = Article()
a2.keyword = Keyword(name="science")

不会产生唯一约束违规。

目前,必须创建从keyword表格中获取FK的其他查询,并将其设置为Article对象中的Article.keyword_id

对现实世界的模式非常无聊。

1 个答案:

答案 0 :(得分:1)

查看Unique Object食谱。