---
title: "SQLAlchemy"
id: integrations-sqlalchemy
description: "SQLAlchemy integration for Haystack"
slug: "/integrations-sqlalchemy"
---
## haystack_integrations.components.retrievers.sqlalchemy.sqlalchemy_table_retriever
### SQLAlchemyTableRetriever
Connects to any SQLAlchemy-supported database and executes a SQL query.
Returns results as a Pandas DataFrame and an optional Markdown-formatted table string.
Supports any database backend that SQLAlchemy supports, including PostgreSQL, MySQL,
SQLite, and MSSQL.
### Usage example:
```python
from haystack_integrations.components.retrievers.sqlalchemy import SQLAlchemyTableRetriever
retriever = SQLAlchemyTableRetriever(drivername="sqlite", database=":memory:")
retriever.warm_up()
result = retriever.run(query="SELECT 1 AS value")
print(result["dataframe"])
print(result["table"])
```
#### __init__
```python
__init__(
drivername: str,
username: str | None = None,
password: Secret | None = None,
host: str | None = None,
port: int | None = None,
database: str | None = None,
init_script: list[str] | None = None,
) -> None
```
Initialize SQLAlchemyTableRetriever.
**Parameters:**
- **drivername** (str) – The SQLAlchemy driver name (e.g., `"sqlite"`,
`"postgresql+psycopg2"`).
- **username** (str | None) – Database username.
- **password** (Secret | None) – Database password as a Haystack `Secret`.
- **host** (str | None) – Database host.
- **port** (int | None) – Database port.
- **database** (str | None) – Database name or path (e.g., `":memory:"` for SQLite in-memory).
- **init_script** (list\[str\] | None) – Optional list of SQL statements executed once on `warm_up()`
(e.g., to create tables or insert seed data). Each statement should be a
separate string in the list.
#### warm_up
```python
warm_up() -> None
```
Initialize the database engine and execute `init_script` if provided.
Called automatically by `run()` on first invocation if not already warmed up.
#### to_dict
```python
to_dict() -> dict[str, Any]
```
Serialize the component to a dictionary.
**Returns:**
- dict\[str, Any\] – Dictionary with serialized data.
#### from_dict
```python
from_dict(data: dict[str, Any]) -> SQLAlchemyTableRetriever
```
Deserialize the component from a dictionary.
**Parameters:**
- **data** (dict\[str, Any\]) – Dictionary to deserialize from.
**Returns:**
- SQLAlchemyTableRetriever – Deserialized component.
#### run
```python
run(query: str) -> dict[str, Any]
```
Execute a SQL query and return the results.
**Parameters:**
- **query** (str) – The SQL query to execute.
**Returns:**
- dict\[str, Any\] – A dictionary with:
- `dataframe`: A Pandas DataFrame with the query results.
- `table`: A Markdown-formatted string of the results.
- `error`: An error message if the query failed, otherwise an empty string.