# SqliteSaver

> **Class** in `langgraph.checkpoint.sqlite`

📖 [View in docs](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver)

A checkpoint saver that stores checkpoints in a SQLite database.

## Signature

```python
SqliteSaver(
    self,
    conn: sqlite3.Connection,
    *,
    serde: SerializerProtocol | None = None,
)
```

## Description

**Note:**

This class is meant for lightweight, synchronous use cases
(demos and small projects) and does not
scale to multiple threads.
For a similar sqlite saver with `async` support,
consider using [AsyncSqliteSaver][langgraph.checkpoint.sqlite.aio.AsyncSqliteSaver].

Examples:

>>> import sqlite3
>>> from langgraph.checkpoint.sqlite import SqliteSaver
>>> from langgraph.graph import StateGraph
>>>
>>> builder = StateGraph(int)
>>> builder.add_node("add_one", lambda x: x + 1)
>>> builder.set_entry_point("add_one")
>>> builder.set_finish_point("add_one")
>>> # Create a new SqliteSaver instance
>>> # Note: check_same_thread=False is OK as the implementation uses a lock
>>> # to ensure thread safety.
>>> conn = sqlite3.connect("checkpoints.sqlite", check_same_thread=False)
>>> memory = SqliteSaver(conn)
>>> graph = builder.compile(checkpointer=memory)
>>> config = {"configurable": {"thread_id": "1"}}
>>> graph.get_state(config)
>>> result = graph.invoke(3, config)
>>> graph.get_state(config)
StateSnapshot(values=4, next=(), config={'configurable': {'thread_id': '1', 'checkpoint_ns': '', 'checkpoint_id': '0c62ca34-ac19-445d-bbb0-5b4984975b2a'}}, parent_config=None)

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `conn` | `sqlite3.Connection` | Yes | The SQLite database connection. |
| `serde` | `Optional[SerializerProtocol]` | No | The serializer to use for serializing and deserializing checkpoints. Defaults to JsonPlusSerializerCompat. (default: `None`) |

## Extends

- `BaseCheckpointSaver[str]`

## Constructors

```python
__init__(
    self,
    conn: sqlite3.Connection,
    *,
    serde: SerializerProtocol | None = None,
) -> None
```

| Name | Type |
|------|------|
| `conn` | `sqlite3.Connection` |
| `serde` | `SerializerProtocol \| None` |


## Properties

- `conn`
- `is_setup`
- `jsonplus_serde`
- `lock`

## Methods

- [`from_conn_string()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/from_conn_string)
- [`setup()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/setup)
- [`cursor()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/cursor)
- [`get_tuple()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/get_tuple)
- [`list()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/list)
- [`put()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/put)
- [`put_writes()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/put_writes)
- [`delete_thread()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/delete_thread)
- [`get_delta_channel_history()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/get_delta_channel_history)
- [`aget_tuple()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/aget_tuple)
- [`alist()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/alist)
- [`aput()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/aput)
- [`get_next_version()`](https://reference.langchain.com/python/langgraph.checkpoint.sqlite/SqliteSaver/get_next_version)

---

[View source on GitHub](https://github.com/langchain-ai/langgraph/blob/398d6cc59d4cf81ab23c09f037e9f521c3fedcd6/libs/checkpoint-sqlite/langgraph/checkpoint/sqlite/__init__.py#L45)