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.
get_semantic_views_description Get information about semantic views (if any) for the system prompt.
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.

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 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.

Parameters

Name Type Description Default
categorical_threshold int Maximum number of unique values for a text column to be considered categorical required

Returns

Name Type Description
str String describing the schema

get_semantic_views_description

types.SQLAlchemySource.get_semantic_views_description()

Get information about semantic views (if any) for the system prompt.

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