Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

LangGraph Checkpoint Oracle

Implementation of LangGraph CheckpointSaver that uses Oracle Database.

[!TIP] The code in this repository tries to mimic the code in langgraph-checkpoint-postgres as much as possible to enable keeping in sync with the official checkpointer implementation.

[!NOTE] This implementation uses Oracle-specific SQL syntax and data types. Oracle Database 19c or later is recommended.

Supported Oracle Database

Oracle Database 18c or later is recommended.

Dependencies

To use Both synchronous OracleSaver and asynchronous AsyncOracleSaver, install the oracledb package.

There is currently no support for other drivers.

Usage

[!IMPORTANT] When using Oracle checkpointers for the first time, make sure to call the .setup() method to create required tables. See example below.

[!IMPORTANT] When manually creating Oracle connections and passing them to OracleSaver, pay attention to transaction management.

[!IMPORTANT] __|default|__ is not allowed as a checkpoint_ns because it is reserved for internal use.

from oracledb import ConnectParams
from langgraph.checkpoint.oracle import OracleSaver

write_config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
read_config = {"configurable": {"thread_id": "1"}}

DB_PARAMS = {
    "user": "user",
    "password": "password",
    "dsn": "localhost:1521/ORCLPDB1",
}
params = ConnectParams(host="localhost", port=1521, service_name="FREE", user="system", password="test")
with OracleSaver.from_conn_params(DB_PARAMS) as checkpointer:
    # call .setup() the first time you're using the checkpointer
    checkpointer.setup()
    checkpoint = {
        "v": 2,
        "ts": "2024-07-31T20:14:19.804150+00:00",
        "id": "1ef4f797-8335-6428-8001-8a1503f9b875",
        "channel_values": {
            "my_key": "meow",
            "node": "node"
        },
        "channel_versions": {
            "__start__": 2,
            "my_key": 3,
            "start:node": 3,
            "node": 3
        },
        "versions_seen": {
            "__input__": {},
            "__start__": {
            "__start__": 1
            },
            "node": {
            "start:node": 2
            }
        },
        "pending_sends": [],
    }

    # store checkpoint
    checkpointer.put(write_config, checkpoint, {}, {})

    # load checkpoint
    checkpointer.get(read_config)

    # list checkpoints
    list(checkpointer.list(read_config))

Async

from oracledb import ConnectParams
from langgraph.checkpoint.oracle.aio import AsyncOracleSaver

params = ConnectParams(host="localhost", port=1521, service_name="FREE", user="system", password="test")
async with AsyncOracleSaver.from_conn_params(params) as checkpointer:
    checkpoint = {
        "v": 2,
        "ts": "2024-07-31T20:14:19.804150+00:00",
        "id": "1ef4f797-8335-6428-8001-8a1503f9b875",
        "channel_values": {
            "my_key": "meow",
            "node": "node"
        },
        "channel_versions": {
            "__start__": 2,
            "my_key": 3,
            "start:node": 3,
            "node": 3
        },
        "versions_seen": {
            "__input__": {},
            "__start__": {
            "__start__": 1
            },
            "node": {
            "start:node": 2
            }
        },
        "pending_sends": [],
    }

    # store checkpoint
    await checkpointer.aput(write_config, checkpoint, {}, {})

    # load checkpoint
    await checkpointer.aget(read_config)

    # list checkpoints
    [c async for c in checkpointer.alist(read_config)]

Metadata

Release files for langgraph-checkpoint-oracle 2.0.0rc7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langgraph-checkpoint-oracle 2.0.0rc7
File Size Uploaded
langgraph_checkpoint_oracle-2.0.0rc7.tar.gz 11.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langgraph-checkpoint-oracle 2.0.0rc7
File Interpreter ABI Platform
langgraph_checkpoint_oracle-2.0.0rc7-py3-none-any.whl Python 3 none any Details

Total release size: 27.0 kB

Release files / langgraph_checkpoint_oracle-2.0.0rc7.tar.gz

Download URL langgraph_checkpoint_oracle-2.0.0rc7.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6c6f22d9610608794cdadb83c9c6cf6bd22b60fda332cf7e160210ffa9db2024
BLAKE2b-256 checksum
How to use checksums
c815bc804adbc3aa6c0689bb8578a72d72ae348f175e75d146a34e45150ae04d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Darwin/23.6.0

Release files / langgraph_checkpoint_oracle-2.0.0rc7-py3-none-any.whl

Download URL langgraph_checkpoint_oracle-2.0.0rc7-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9dc442e4d2f370a11a303784307f17ce8636e42ad2aa697aebf545807fdebdfa
BLAKE2b-256 checksum
How to use checksums
b039979164179f6bff6eca9363944ebc694b047ff6e8c512b9f05d9293426ab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.11.2 Darwin/23.6.0

Release history Release notifications | RSS feed

This release

2.0.0rc7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page