Skip to main content

Library with a MySQL implementation of LangGraph checkpoint saver.

Project description

LangGraph Checkpoint MySQL

Implementation of LangGraph CheckpointSaver that uses MySQL.

[!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] In order to keep the queries close to the Postgres queries, we use features from recent versions of MySQL 8. I'm not sure what the exact minimum version is.

Dependencies

To use synchronous PyMySQLSaver, install langgraph-checkpoint-mysql[pymysql]. To use asynchronous AIOMySQLSaver, install langgraph-checkpoint-mysql[aiomysql].

There is currently no support for other drivers.

Usage

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

[!IMPORTANT] When manually creating MySQL connections and passing them to PyMySQLSaver or AIOMySQLSaver, make sure to include autocommit=True.

from langgraph.checkpoint.mysql.pymysql import PyMySQLSaver

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

DB_URI = "mysql://mysql:mysql@localhost:3306/mysql"
with PyMySQLSaver.from_conn_string(DB_URI) as checkpointer:
    # call .setup() the first time you're using the checkpointer
    checkpointer.setup()
    checkpoint = {
        "v": 1,
        "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 langgraph.checkpoint.mysql.aio import AIOMySQLSaver

async with AIOMySQLSaver.from_conn_string(DB_URI) as checkpointer:
    checkpoint = {
        "v": 1,
        "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)]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langgraph_checkpoint_mysql-2.0.2.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

langgraph_checkpoint_mysql-2.0.2-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file langgraph_checkpoint_mysql-2.0.2.tar.gz.

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-2.0.2.tar.gz
Algorithm Hash digest
SHA256 0f6963f53cd4074ed5e1a2e31feae4c6174864114e228e0c3f89271f63aeb329
MD5 3ccff49730273aa2cc10571838af1f92
BLAKE2b-256 bd67b12a3a5a9bc093f1419a501f7c7550901903cefc36b93a491900cab015a0

See more details on using hashes here.

File details

Details for the file langgraph_checkpoint_mysql-2.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a353668345ede3ae4282e485ffc8e5ebb757aed1fc869f2b4ae58222d9257f84
MD5 e3b69773648040c31009f975c4109761
BLAKE2b-256 317212069cea6079788f7374b83d5134fa3de87e7f84177e803fc34aa0b5214c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page