1

オブジェクトを作成してデータベースに格納するプロセスのどこで、主キーが SQLAlchemy によって割り当てられるのか疑問に思っています。私のアプリでは、何かが起こったときにその「出来事」のイベントを作成し、そのイベントについて知る必要がある各ユーザーに通知を作成します。これはすべて同じ方法で行われます。

問題は、通知がイベントを参照することです。これを実現するには、データベースに 2 回接続する必要がありますか? 最初にイベントを保存して主キーが割り当てられるようにし、次に通知を保存しますか? データベースに一度だけ接続することは可能ですか?

したがって、次の手順を実行する必要があります。

  1. ユーザーが何かをする
  2. イベントを作成する
  3. 必要?イベントをデータベースに保存して、参照する主キーを取得します
  4. イベントを参照する通知を作成する
  5. 通知を保存する
4

1 に答える 1

2

オブジェクトを, andにNotification渡すだけで作成する主キーについて心配する必要はありません。準備万端です。EventNotificationcommit

SQLAlchemy は主キーを割り当てません。テーブルを次のように宣言した場合、通常、暗黙的にそれ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()
于 2013-09-11T08:06:33.877 に答える