types.SQLAlchemySource
SQLAlchemySource(engine, table_name)A DataSource implementation that supports multiple SQL databases via SQLAlchemy.
Supports various databases including PostgreSQL, MySQL, SQLite, Snowflake, and Databricks.
Methods
| Name | Description |
|---|---|
| cleanup | Dispose of the SQLAlchemy engine. |
| execute_query | Execute SQL query and return results as DataFrame. |
| get_data | Return the unfiltered data as a DataFrame. |
| get_db_type | Get the database type. |
| get_schema | Generate schema information from database table. |
| test_query | Test query by fetching only one row. |
cleanup
types.SQLAlchemySource.cleanup()Dispose of the SQLAlchemy engine.
Returns
| Name | Type | Description |
|---|---|---|
| None |
execute_query
types.SQLAlchemySource.execute_query(query)Execute SQL query and return results as DataFrame.
Uses polars if available, otherwise falls back to pandas.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| query | str | SQL query to execute | required |
Returns
| Name | Type | Description |
|---|---|---|
nw.DataFrame |
Query results as narwhals DataFrame |
Raises
| Name | Type | Description |
|---|---|---|
UnsafeQueryError |
If the query starts with a disallowed SQL operation |
get_data
types.SQLAlchemySource.get_data()Return the unfiltered data as a DataFrame.
Returns
| Name | Type | Description |
|---|---|---|
nw.DataFrame |
The complete dataset as a narwhals DataFrame |
get_db_type
types.SQLAlchemySource.get_db_type()Get the database type.
Returns the specific database type (e.g., POSTGRESQL, MYSQL, SQLITE) by inspecting the SQLAlchemy engine. Removes ” SQL” suffix if present.
get_schema
types.SQLAlchemySource.get_schema(categorical_threshold)Generate schema information from database table.
Returns: String describing the schema
test_query
types.SQLAlchemySource.test_query(query, *, require_all_columns=False)Test query by fetching only one row.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| query | str | SQL query to test | required |
| require_all_columns | bool | If True, validates that result includes all original table columns | False |
Returns
| Name | Type | Description |
|---|---|---|
nw.DataFrame |
Query results with at most one row |
Raises
| Name | Type | Description |
|---|---|---|
UnsafeQueryError |
If the query starts with a disallowed SQL operation | |
MissingColumnsError |
If require_all_columns is True and result is missing required columns |