db_handler#

class baf.db.db_handler.DBHandler(agent)[source]#

Bases: object

Relational database handler for agent business data.

The handler reads SQL database definitions from db.sql in the agent configuration and opens connections lazily when they are first needed.

_DEFAULT_REQUIRED_DB_FIELDS = {'database', 'dialect', 'host', 'password', 'port', 'username'}#
_DIALECT_REQUIRED_DB_FIELDS = {'postgres': {'database', 'dialect', 'host', 'password', 'port', 'username'}, 'sqlite': {'dialect', 'file'}}#
_SQL_COMMAND_PATTERN = re.compile('^\\s*(?:/\\*.*?\\*/\\s*|--.*?(?:\\n|\\r\\n?)\\s*)*([a-zA-Z]+)', re.DOTALL)#
_build_db_url(db_name)[source]#
_default_llm()[source]#
_execute_sql(db_name, sql_query)[source]#
_extract_db_configs(config)[source]#
static _extract_sql(text_response)[source]#
static _looks_like_sql(query)[source]#
_nl_to_sql(db_name, nl_query, llm)[source]#
_required_db_fields(db_config)[source]#
_resolve_sql_query(db_name, query, llm=None, required_sql_command=None)[source]#
_schema_description(db_name)[source]#
_sql_command(sql_query)[source]#
_validate_db_config(db_name, db_config)[source]#
_validate_sql_command(sql_query, required_sql_command)[source]#
close_all()[source]#

Close all opened DB connections.

connect_to_db(db_name)[source]#

Get or create an active SQLAlchemy connection for a configured DB.

property db_names#

Return configured database names from db.sql (e.g., db1, db2).

delete(db_name, query, llm=None)[source]#

Execute a DELETE query.

The SQL command must be DELETE.

insert(db_name, query, llm=None)[source]#

Execute an INSERT query.

The SQL command must be INSERT.

query(db_name, query, llm=None)[source]#

Execute a SQL query.

If llm is provided, query is treated as natural language and first translated into SQL using the schema of db_name as context.

select(db_name, query, llm=None)[source]#

Execute a SELECT query (read-only).

The SQL command must be SELECT.

update(db_name, query, llm=None)[source]#

Execute an UPDATE query.

The SQL command must be UPDATE.