检查其他资源
- 我为这个问题添加了一个非常描述性的标题。
- 我在LangChain文档中使用集成搜索进行搜索。
- 我使用GitHub搜索找到了一个类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此错误。
示例代码
from langchain_community.utilities import SQLDatabase
host = config["DEFAULT"]["DB_HOST"]
port = config["DEFAULT"]["DB_PORT"]
db_name = config["DEFAULT"]["DB_NAME"]
username = config["DEFAULT"]["DB_USERNAME"]
password = os.getenv(config["DEFAULT"]["DB_PASSWORD"])
url = f"postgresql+psycopg2://{username}:{password}@{host}:{port}/{db_name}"
include_tables = [
"schema",
"schema_field"
]
db = SQLDatabase.from_uri(url, include_tables=include_tables)
错误信息和堆栈跟踪(如果适用)
{
"name": "ValueError",
"message": "include_tables {'schema_field', 'schema'} not found in database",
"stack": "---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[15], line 16
9 url = f\"postgresql+psycopg2://{username}:{password}@{host}:{port}/{db_name}\"
11 include_tables = [
12 \"schema\",
13 \"schema_field\"
14 ]
---> 16 db = SQLDatabase.from_uri(url, include_tables=include_tables)
File ~/mambaforge/envs/langchain/lib/python3.12/site-packages/langchain_community/utilities/sql_database.py:135, in SQLDatabase.from_uri(cls, database_uri, engine_args, **kwargs)
133 \"\"\"Construct a SQLAlchemy engine from URI.\"\"\"
134 _engine_args = engine_args or {}
--> 135 return cls(create_engine(database_uri, **_engine_args), **kwargs)
File ~/mambaforge/envs/langchain/lib/python3.12/site-packages/langchain_community/utilities/sql_database.py:82, in SQLDatabase.__init__(self, engine, schema, metadata, ignore_tables, include_tables, sample_rows_in_table_info, indexes_in_table_info, custom_table_info, view_support, max_string_length, lazy_table_reflection)
80 missing_tables = self._include_tables - self._all_tables
81 if missing_tables:
---> 82 raise ValueError(
83 f\"include_tables {missing_tables} not found in database\"
84 )
85 self._ignore_tables = set(ignore_tables) if ignore_tables else set()
86 if self._ignore_tables:
ValueError: include_tables {'schema_field', 'schema'} not found in database"
}
描述
使用:
include_tables = [
"schema$raw",
"schema_field$raw"
]
而不是没有 $raw
后缀的字段可以正常工作。
在这个PostgreSQL数据库中,每个模式都有 $raw
版本(例如, schema$raw
和 schema
)。 $raw
版本包含所有记录,而非原始版本包含“清理”后的表。
似乎 langchain_community.utilities.SQLDatabase
没有正确处理这种情况。它似乎只检测到 $raw
模式。
系统信息
系统信息
操作系统:Darwin
操作系统版本:Darwin Kernel Version 23.4.0: Fri Mar 15 00:12:49 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6020
Python版本:3.12.3 | 由conda-forge打包 | (main, Apr 15 2024, 18:35:20) [Clang 16.0.6]
软件包信息
langchain_core: 0.2.1
langchain: 0.2.1
langchain_community: 0.0.38
langsmith: 0.1.77
langchain_groq: 0.1.5
langchain_openai: 0.1.8
langchain_text_splitters: 0.2.0
langgraph: 0.0.69
没有安装的软件包(不一定是问题)
以下软件包未找到:
langserve
3条答案
按热度按时间cwdobuhd1#
请确保您的数据库中存在表格:"schema" 和 "schema_field"。
xkftehaa2#
这个问题似乎是由使用
sqlalchemy.inspect
列出langchain_community.utilities.SQLDatabase
中的所有表引起的。如果我运行sqlalchemy.inspect
:...那么我只能看到
$raw
表的名称。所有表格(原始和非原始)都位于同一个数据库模式中,所以这不是问题所在。tp5buhyn3#
问题是由于非
$raw
版本的表实际上是视图(每个$raw
表的过滤版本)。如果langchain_community.utilities.SQLDatabase
支持表视图,将会很有帮助。例如,以下是 SQLAlchemy 代码来列出视图: