You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Langchain的SQLDatabase.from_uri中指定要使用的Schema?

解决Langchain SQLDatabase指定PostgreSQL Schema的问题

当PostgreSQL数据库存在多个Schema时,Langchain的SQLDatabase.from_uri默认只会扫描连接默认search_path下的Schema(通常是public),如果你的表在其他Schema中,就会出现get_usable_table_names()返回空的情况。可以通过以下两种方式指定目标Schema:

方法1:使用SQLDatabase.from_uri的schema参数

直接在初始化时传入schema参数指定目标Schema名称:

db = SQLDatabase.from_uri(
    f"postgresql+psycopg2://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}",
    schema="your_target_schema"  # 替换为实际的Schema名称
)
print(db.dialect)
print(db.get_usable_table_names())
print(db.table_info)

方法2:在连接URI中指定search_path

通过URI的options参数设置PostgreSQL的search_path,指定要加载的Schema:

# 单个Schema
db = SQLDatabase.from_uri(
    f"postgresql+psycopg2://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}?options=-csearch_path%3Dyour_target_schema"
)

# 多个Schema(用逗号分隔,URL编码逗号为%2C)
db = SQLDatabase.from_uri(
    f"postgresql+psycopg2://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}?options=-csearch_path%3Dschema1%2Cschema2"
)

执行修改后的代码后,get_usable_table_names()将返回指定Schema下的所有可用表,table_info也会包含这些表的结构信息。

内容的提问来源于stack exchange,提问作者Jesus Ivan Verdugo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:09:56