Skip to main content

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.

[!NOTE] MySQL >= 9.6.0 discontinued using the MD5 function in generated columns, but we have not created a migration path for this yet.

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)]

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-3.0.0.tar.gz (213.1 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-3.0.0-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-3.0.0.tar.gz
Algorithm Hash digest
SHA256 006aaa089f4c2fbd7b2c113b800ccd3dbb95f92203e656451677256b4b4f880f
MD5 9026b2fc1b3313c3e3bfc48c66cf0d78
BLAKE2b-256 e04e0a6c78e5d3f2ca1525903c2363e721873594b6b77dd83537a6369193c474

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_mysql-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7560ccd16e7596a047e15a307cec12dbd88fdcaab45a75759e5c6adef22a27d1
MD5 0d589dd6f93c3d868aa0014322035a1f
BLAKE2b-256 0868343103a7fae05523f9cecabbec2babdb737e66b4bf6ea48ae00c685ed11c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 files

2.0.17

2 files

2.0.16

2 files

2.0.15

2 files

2.0.14

2 files

2.0.13

2 files

2.0.12

2 files

2.0.11

2 files

2.0.10

2 files

2.0.9

2 files

2.0.8

2 files

2.0.7

2 files

2.0.6

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

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