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, installlanggraph-checkpoint-mysql[pymysql]. - To use asynchronous
AIOMySQLSaver, installlanggraph-checkpoint-mysql[aiomysql]. - To use asynchronous
AsyncMySaver, installlanggraph-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
PyMySQLSaverorAIOMySQLSaver, make sure to includeautocommit=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)]
Metadata
Release files for langgraph-checkpoint-mysql 3.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langgraph_checkpoint_mysql-3.0.0.tar.gz | 213.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langgraph_checkpoint_mysql-3.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 251.2 kB
Release files / langgraph_checkpoint_mysql-3.0.0.tar.gz
| Download URL | langgraph_checkpoint_mysql-3.0.0.tar.gz |
|---|---|
| Size | 213.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
006aaa089f4c2fbd7b2c113b800ccd3dbb95f92203e656451677256b4b4f880f
|
|
BLAKE2b-256 checksum How to use checksums |
e04e0a6c78e5d3f2ca1525903c2363e721873594b6b77dd83537a6369193c474
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / langgraph_checkpoint_mysql-3.0.0-py3-none-any.whl
| Download URL | langgraph_checkpoint_mysql-3.0.0-py3-none-any.whl |
|---|---|
| Size | 38.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7560ccd16e7596a047e15a307cec12dbd88fdcaab45a75759e5c6adef22a27d1
|
|
BLAKE2b-256 checksum How to use checksums |
0868343103a7fae05523f9cecabbec2babdb737e66b4bf6ea48ae00c685ed11c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|