我想知道在创建对象和将它们存储在数据库中的哪个位置,主键由SQLAlchemy分配。在我的应用程序中,当发生某些事情时,我会为“发生”创建一个事件,然后为需要了解该事件的每个用户创建一个通知。这一切都发生在同一种方法中。
现在的问题是Notification引用了Event。我应该连接两次到数据库来实现吗?首先存储事件,以便为其分配主键,然后存储通知? 是否可以只连接一次数据库?
所以这些步骤应该发生:
答案 0 :(得分:2)
您无需担心创建Notification
的主键只需将Event
对象传递给Notification
和commit
。你很高兴。
SQLAlchemy没有为主键分配主键,它通常是隐式does it的数据库,前提是您已使用以下内容声明表:id = Column(Integer, primary_key = True)
。
class Event(Base):
__tablename__ = "events"
id = Column(Integer, primary_key = True)
...
class Notification(Base):
__tablename__ = "notifications"
id = Column(Integer, primary_key = True)
event_id = Column(Integer, ForeignKey("events.id"))
event = relationship("Event")
...
def __init__(self, event):
self.event = event
notification = Notification(Event())
session.add(notification)
session.commit()