SQLAlchemy插入具有多对一关系的新记录

时间:2018-08-02 08:41:12

标签: python sqlalchemy foreign-keys relationship

我不确定这是否可能,但是示例代码如下:

我相信两个示例类代表多对一关系:

class Book(Base):

    __tablename__ = 'book'

    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    status_id = Column(ForeignKey(u'status.id'))
    status = relationship(u'Status', back_populates="books")

class Status(Base):

    __tablename__ = 'status'

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    books = relationship("Book", back_populates="status")

在状态表中,我有如下记录:

+----+--------------+
| id | name         |
+----+--------------+
|  1 | draft        |
|  2 | in progress  |
|  3 | under review |
|  4 | finished     |
+----+--------------+

这里是问题,有什么办法可以创建像这样的书:

book = Book()
book.name = "Relationships in SQL"
book.status.name = "finished"

在创建全新的Book记录时,“ status”属性为“无”,因此这是不可能的。我试图偷偷摸摸,并这样做:

book = Book()
book.name = "Relationships in SQL"
book.status = Status(name="finished")

但是,正如我期望的那样,这在状态表中创建了一个全新的条目。

我要实现的目的是创建一本书,而不必先从“状态”中查找正确的ID。

如果这不可能,我可以忍受,但我只想知道这两种方式。我似乎找不到与此情况相关的任何文档。

0 个答案:

没有答案