# SQLChatMessageHistory

> **Class** in `langchain_community`

📖 [View in docs](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory)

Chat message history stored in an SQL database.

## Signature

```python
SQLChatMessageHistory(
    self,
    session_id: str,
    table_name: str = 'message_store',
    session_id_field_name: str = 'session_id',
    custom_message_converter: Optional[BaseMessageConverter] = None,
    connection: Union[None, DBConnection] = None,
    engine_args: Optional[Dict[str, Any]] = None,
    async_mode: Optional[bool] = None,
)
```

## Description

**Example:**

.. code-block:: python

from langchain_core.messages import HumanMessage

from langchain_community.chat_message_histories import SQLChatMessageHistory

# create sync sql message history by connection_string
message_history = SQLChatMessageHistory(
    session_id='foo', connection_string='sqlite///:memory.db'
)
message_history.add_message(HumanMessage("hello"))
message_history.message

# create async sql message history using aiosqlite
# from sqlalchemy.ext.asyncio import create_async_engine
#
# async_engine = create_async_engine("sqlite+aiosqlite:///memory.db")
# async_message_history = SQLChatMessageHistory(
#     session_id='foo', connection=async_engine,
# )
# await async_message_history.aadd_message(HumanMessage("hello"))
# await async_message_history.aget_messages()

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `session_id` | `str` | Yes | Indicates the id of the same session. |
| `table_name` | `str` | No | Table name used to save data. (default: `'message_store'`) |
| `session_id_field_name` | `str` | No | The name of field of `session_id`. (default: `'session_id'`) |
| `custom_message_converter` | `Optional[BaseMessageConverter]` | No | Custom message converter for converting database data and `BaseMessage` (default: `None`) |
| `connection` | `Union[None, DBConnection]` | No | Database connection object, which can be a string containing connection configuration, Engine object or AsyncEngine object. (default: `None`) |
| `engine_args` | `Optional[Dict[str, Any]]` | No | Additional configuration for creating database engines. (default: `None`) |
| `async_mode` | `Optional[bool]` | No | Whether it is an asynchronous connection. (default: `None`) |

## Extends

- `BaseChatMessageHistory`

## Constructors

```python
__init__(
    self,
    session_id: str,
    table_name: str = 'message_store',
    session_id_field_name: str = 'session_id',
    custom_message_converter: Optional[BaseMessageConverter] = None,
    connection: Union[None, DBConnection] = None,
    engine_args: Optional[Dict[str, Any]] = None,
    async_mode: Optional[bool] = None,
)
```

| Name | Type |
|------|------|
| `session_id` | `str` |
| `table_name` | `str` |
| `session_id_field_name` | `str` |
| `custom_message_converter` | `Optional[BaseMessageConverter]` |
| `connection` | `Union[None, DBConnection]` |
| `engine_args` | `Optional[Dict[str, Any]]` |
| `async_mode` | `Optional[bool]` |


## Properties

- `async_mode`
- `async_engine`
- `engine`
- `session_maker`
- `session_id_field_name`
- `converter`
- `sql_model_class`
- `session_id`
- `messages`

## Methods

- [`get_messages()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/get_messages)
- [`aget_messages()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/aget_messages)
- [`add_message()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/add_message)
- [`aadd_message()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/aadd_message)
- [`add_messages()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/add_messages)
- [`aadd_messages()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/aadd_messages)
- [`clear()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/clear)
- [`aclear()`](https://reference.langchain.com/python/langchain-community/chat_message_histories/sql/SQLChatMessageHistory/aclear)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-community/blob/a6a6079511ac8a5c1293337f88096b8641562e77/libs/community/langchain_community/chat_message_histories/sql.py#L119)