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 that require MySQL >= 8.0.19 or MariaDB >= 10.7.1.

Dependencies

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

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.

Why this parameter is required:

  • autocommit=True: Required for the .setup() method to properly commit the checkpoint tables to the database. Without this, table creation may not be persisted.
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": 4,
        "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
            }
        },
    }

    # 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": 4,
        "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
            }
        },
    }

    # 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.16.tar.gz (222.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langgraph_checkpoint_mysql-2.0.16-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-2.0.16.tar.gz
Algorithm Hash digest
SHA256 50cae05ac0a1ae531762129f97aa09722103b02627d967d82673457ea06fd69f
MD5 08e29213a095ca9e68ec3194545c059d
BLAKE2b-256 d5f4eeb4ef69ca51929dc80c07b52502c5b06a84aedea4f0ed394741fcb540a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-2.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 6c7875bcd36234ffac2960ffe6020f081fcb24e3c9aa1d60076a92c3269e3d8b
MD5 b5701d67e7db1a814288845e3f323d76
BLAKE2b-256 cc3500fa8cc26b3f17e61589b99b89e366f72fcf274e31c1bda38ab9e86ab6e6

See more details on using hashes here.

Supported by

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