Python SQLAlchemy主键分配

Python SQLAlchemy主键分配,python,sqlalchemy,Python,Sqlalchemy,我想知道在创建对象并将其存储在数据库中的过程中,主键是由SQLAlchemy分配的。在我的应用程序中,当某件事情发生时,我会为该事件创建一个事件,然后为每个需要了解该事件的用户创建一个通知。这一切都是以相同的方式发生的 现在的问题是通知引用了事件。我是否应该连接两次数据库以实现此目的?首先存储事件以便为其分配主键,然后存储通知? 是否可以只连接一次数据库 因此,应该采取以下步骤: 用户做了什么 创建一个事件 必要吗?将事件存储在数据库中,以便我获得一个主键来引用 创建引用事件的通知 存储通知 创

我想知道在创建对象并将其存储在数据库中的过程中,主键是由SQLAlchemy分配的。在我的应用程序中,当某件事情发生时,我会为该事件创建一个事件,然后为每个需要了解该事件的用户创建一个通知。这一切都是以相同的方式发生的

现在的问题是通知引用了事件。我是否应该连接两次数据库以实现此目的?首先存储事件以便为其分配主键,然后存储通知? 是否可以只连接一次数据库

因此,应该采取以下步骤:

  • 用户做了什么
  • 创建一个事件
  • 必要吗?将事件存储在数据库中,以便我获得一个主键来引用
  • 创建引用事件的通知
  • 存储通知

  • 创建
    通知
    无需担心主键,只需将
    事件
    对象传递给
    通知
    ,并提交
    即可。你可以走了

    SQLAlchemy不分配主键,数据库通常隐式地为您分配主键,前提是您已使用以下内容声明了表:
    id=Column(Integer,primary\u key=True)


    我想应该是:事件=关系(“事件”)?:)啊..抓得好。它也应该是
    event\u id=Column(整数,ForeignKey(“event.id”))
    。我想应该是events.idthough@arnoutaertgeerts修正了!!;)
    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()