# SQLDatabaseLoader

> **Class** in `langchain_community`

📖 [View in docs](https://reference.langchain.com/python/langchain-community/document_loaders/sql_database/SQLDatabaseLoader)

Load documents by querying database tables supported by SQLAlchemy.

For talking to the database, the document loader uses the `SQLDatabase`
utility from the LangChain integration toolkit.

Each document represents one row of the result.

## Signature

```python
SQLDatabaseLoader(
    self,
    query: Union[str, Select],
    db: SQLDatabase,
    *,
    parameters: Optional[Dict[str, Any]] = None,
    page_content_mapper: Optional[Callable[..., str]] = None,
    metadata_mapper: Optional[Callable[..., Dict[str, Any]]] = None,
    source_columns: Optional[Sequence[str]] = None,
    include_rownum_into_metadata: bool = False,
    include_query_into_metadata: bool = False,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `query` | `Union[str, Select]` | Yes | The query to execute. |
| `db` | `SQLDatabase` | Yes | A LangChain `SQLDatabase`, wrapping an SQLAlchemy engine. |
| `sqlalchemy_kwargs` | `unknown` | Yes | More keyword arguments for SQLAlchemy's `create_engine`. |
| `parameters` | `Optional[Dict[str, Any]]` | No | Optional. Parameters to pass to the query. (default: `None`) |
| `page_content_mapper` | `Optional[Callable[..., str]]` | No | Optional. Function to convert a row into a string to use as the `page_content` of the document. By default, the loader serializes the whole row into a string, including all columns. (default: `None`) |
| `metadata_mapper` | `Optional[Callable[..., Dict[str, Any]]]` | No | Optional. Function to convert a row into a dictionary to use as the `metadata` of the document. By default, no columns are selected into the metadata dictionary. (default: `None`) |
| `source_columns` | `Optional[Sequence[str]]` | No | Optional. The names of the columns to use as the `source` within the metadata dictionary. (default: `None`) |
| `include_rownum_into_metadata` | `bool` | No | Optional. Whether to include the row number into the metadata dictionary. Default: False. (default: `False`) |
| `include_query_into_metadata` | `bool` | No | Optional. Whether to include the query expression into the metadata dictionary. Default: False. (default: `False`) |

## Extends

- `BaseLoader`

## Constructors

```python
__init__(
    self,
    query: Union[str, Select],
    db: SQLDatabase,
    *,
    parameters: Optional[Dict[str, Any]] = None,
    page_content_mapper: Optional[Callable[..., str]] = None,
    metadata_mapper: Optional[Callable[..., Dict[str, Any]]] = None,
    source_columns: Optional[Sequence[str]] = None,
    include_rownum_into_metadata: bool = False,
    include_query_into_metadata: bool = False,
)
```

| Name | Type |
|------|------|
| `query` | `Union[str, Select]` |
| `db` | `SQLDatabase` |
| `parameters` | `Optional[Dict[str, Any]]` |
| `page_content_mapper` | `Optional[Callable[..., str]]` |
| `metadata_mapper` | `Optional[Callable[..., Dict[str, Any]]]` |
| `source_columns` | `Optional[Sequence[str]]` |
| `include_rownum_into_metadata` | `bool` |
| `include_query_into_metadata` | `bool` |


## Properties

- `query`
- `db`
- `parameters`
- `page_content_mapper`
- `metadata_mapper`
- `source_columns`
- `include_rownum_into_metadata`
- `include_query_into_metadata`

## Methods

- [`lazy_load()`](https://reference.langchain.com/python/langchain-community/document_loaders/sql_database/SQLDatabaseLoader/lazy_load)
- [`page_content_default_mapper()`](https://reference.langchain.com/python/langchain-community/document_loaders/sql_database/SQLDatabaseLoader/page_content_default_mapper)
- [`metadata_default_mapper()`](https://reference.langchain.com/python/langchain-community/document_loaders/sql_database/SQLDatabaseLoader/metadata_default_mapper)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-community/blob/4b280287bd55b99b44db2dd849f02d66c89534d5/libs/community/langchain_community/document_loaders/sql_database.py#L11)