是的,LangGraph 使用 PostgreSQL 做会话存储时,会自己自动创建所需的表。
你不需要手动编写 SQL 建表语句,LangGraph 提供了内置的方法来完成这一步。具体机制如下:
⚙️ 自动建表的核心方法: setup()
在使用 PostgreSQL 作为存储后端时(无论是用于短期记忆的 PostgresSaver 还是用于长期记忆的 PostgresStore ),你只需要在代码中调用一次 .setup() 方法,它就会自动在你的数据库中创建好所有必要的表结构 。
通常在首次连接并初始化 Checkpointer 时调用:from langgraph.checkpoint.postgres import PostgresSaver
DB_URI = "postgresql://user:password@host:port/dbname"
with PostgresSaver.from_conn_string(DB_URI) as checkpointer:
首次运行时,调用 setup() 自动创建数据库表
checkpointer.setup()
注意: setup() 是一个一次性的操作,表创建成功后,后续运行可以注释掉或移除这行代码 。
📋 会自动创建哪些表?
当你调用 setup() 后,LangGraph 默认会在 PostgreSQL 的 public schema 下创建以下 4 张核心表,用于管理对话状态和检查点: 表名 作用说明
checkpoints 核心表,存储对话的检查点状态(包含 thread_id、状态快照等)
checkpoint_blobs 存储状态通道中的具体二进制数据(blob)
checkpoint_writes 记录检查点之间的中间写入操作,保证状态一致性
checkpoint_migrations 记录数据库结构的版本迁移历史此外,如果你还使用了 PostgresStore (用于长期记忆或向量存储),它还会额外创建如 store 和 store_vectors 等表 。
💡 补充说明
权限要求:虽然表是自动创建的,但你在 DB_URI 中配置的数据库用户必须拥有创建表(CREATE TABLE)的权限,否则 setup() 会报错 。
指定 Schema:默认表会建在 public 下。如果你想指定其他 schema,可以在数据库连接字符串(DB_URI)中通过 options 参数指定(例如: ?options=-csearch_path%3Dyour_schema,public ) 。