Library with a OceanBase MySQL Mode 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, 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)]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langgraph_checkpoint_oceanbase-2.0.17.tar.gz.
File metadata
- Download URL: langgraph_checkpoint_oceanbase-2.0.17.tar.gz
- Upload date:
- Size: 218.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
191e9df5d4238cc01bd3f20f87a35d516dcedac2a194b94a8fb71eee3a694151
|
|
| MD5 |
6510e4727e4448afe5c95bc86f0ee364
|
|
| BLAKE2b-256 |
4382fd16e5ab26c80e1e77f500e7fe8f0ed87049fd42aa436b2b5d55f1727708
|
File details
Details for the file langgraph_checkpoint_oceanbase-2.0.17-py3-none-any.whl.
File metadata
- Download URL: langgraph_checkpoint_oceanbase-2.0.17-py3-none-any.whl
- Upload date:
- Size: 38.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a00096c535ba76d2c937897f11632b57d6d0787b08a93c759be676d62b09e1a
|
|
| MD5 |
0ef34e96560fe8a56c71016e822ec5b2
|
|
| BLAKE2b-256 |
5250f1f2b27c2f07f7eb9f48a83d1b0bb86a362763f8ab7ebfc5ef428654fa88
|