Class that represents a SQL database in the LangChain framework.

Security Notice This class generates SQL queries for the given database. The SQLDatabase class provides a getTableInfo method that can be used to get column information as well as sample data from the table. To mitigate risk of leaking sensitive data, limit permissions to read and scope to the tables that are needed. Optionally, use the includesTables or ignoreTables class parameters to limit which tables can/cannot be accessed.

See for more information.

Hierarchy (view full)




allTables: SqlTable[] = []
appDataSource: DataSource
appDataSourceOptions: DataSourceOptions
ignoreTables: string[] = []
includesTables: string[] = []
sampleRowsInTableInfo: number = 3
customDescription?: Record<string, string>


  • Get information about specified tables.

    Follows best practices as specified in: Rajkumar et al, 2022 (

    If sample_rows_in_table_info, the specified number of sample rows will be appended to each table description. This can increase performance as demonstrated in the paper.


    • OptionaltargetTables: string[]

    Returns Promise<string>

  • Execute a SQL command and return a string representing the results. If the statement returns rows, a string of the results is returned. If the statement returns no rows, an empty string is returned.


    • command: string
    • fetch: "all" | "one" = "all"

    Returns Promise<string>