AttributeError:在 langchain_community 中使用 SQLDatabaseLoader 时,模块“sqlalchemy”没有属性“Select”

问题描述 投票:0回答:1

我是 Langchain 的新手,我遇到了一个问题。我的最终目标是读取文件的内容并创建数据的矢量存储,以便稍后查询。 我在尝试使用 langchain_community 包中的 SQLDatabaseLoader 时遇到错误。这是我正在运行的代码:

import os
from langchain_community.document_loaders import TextLoader
loader = TextLoader("state_of_the_union.txt")
loader.load()

但是,在执行时,我遇到以下错误:

AttributeError: module 'sqlalchemy' has no attribute 'Select'

它似乎指向 SQLDatabaseLoader 类中的问题。具体来说,错误发生在以下部分代码中:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[17], line 2
      1 import os
----> 2 from langchain_community.document_loaders import TextLoader
      3 loader = TextLoader("state_of_the_union.txt")
      4 loader.load()

File ~\AppData\Roaming\Python\Python310\site-packages\langchain_community\document_loaders\__init__.py:190
    188 from langchain_community.document_loaders.snowflake_loader import SnowflakeLoader
    189 from langchain_community.document_loaders.spreedly import SpreedlyLoader
--> 190 from langchain_community.document_loaders.sql_database import SQLDatabaseLoader
    191 from langchain_community.document_loaders.srt import SRTLoader
    192 from langchain_community.document_loaders.stripe import StripeLoader

File ~\AppData\Roaming\Python\Python310\site-packages\langchain_community\document_loaders\sql_database.py:10
      6 from langchain_community.document_loaders.base import BaseLoader
      7 from langchain_community.utilities.sql_database import SQLDatabase
---> 10 class SQLDatabaseLoader(BaseLoader):
     11     """
     12     Load documents by querying database tables supported by SQLAlchemy.
     13 
   (...)
     17     Each document represents one row of the result.
     18     """
     20     def __init__(
     21         self,
     22         query: Union[str, sa.Select],
   (...)
     30         include_query_into_metadata: bool = False,
     31     ):

File ~\AppData\Roaming\Python\Python310\site-packages\langchain_community\document_loaders\sql_database.py:22, in SQLDatabaseLoader()
     10 class SQLDatabaseLoader(BaseLoader):
     11     """
     12     Load documents by querying database tables supported by SQLAlchemy.
     13 
   (...)
     17     Each document represents one row of the result.
     18     """
     20     def __init__(
     21         self,
---> 22         query: Union[str, sa.Select],
     23         db: SQLDatabase,
     24         *,
     25         parameters: Optional[Dict[str, Any]] = None,
     26         page_content_mapper: Optional[Callable[..., str]] = None,
     27         metadata_mapper: Optional[Callable[..., Dict[str, Any]]] = None,
     28         source_columns: Optional[Sequence[str]] = None,
     29         include_rownum_into_metadata: bool = False,
     30         include_query_into_metadata: bool = False,
     31     ):
     32         """
     33         Args:
     34             query: The query to execute.
   (...)
     49               expression into the metadata dictionary. Default: False.
     50         """
     51         self.query = query

它似乎引用了“sqlalchemy”模块中的属性“Select”,但无法找到它。我不确定为什么会发生这个错误,特别是因为我没有在代码中直接使用“sqlalchemy.Select”。

任何人都可以帮助我了解可能导致此错误的原因以及如何解决它吗?任何见解或建议将不胜感激。谢谢!

系统信息 操作系统:Microsoft Windows 11 10.0.22631

套餐信息

langchain                       0.1.10
langchain-community             0.0.25
langchain-core                  0.1.29
langchain-openai                0.0.8
langchain-text-splitters        0.0.1
langchainhub                    0.1.15
langsmith                       0.1.18
SQLAlchemy                      2.0.28
  • 我用集成搜索搜索了LangChain文档。
  • 我用Stackoverflow和GitHub搜索找到类似的问题,没有找到。
  • 我确信这是LangChain中的错误而不是我的代码。
  • 更新LangChain最新稳定版本(或特定集成包)并不能解决该Bug。
  • 我尝试过使用 SQLAlchemy 1.3、1.4 和 2.0 版本,但仍然遇到同样的错误。
sqlalchemy langchain py-langchain
1个回答
0
投票

我刚刚重新安装了软件包并指定了版本 2.0.0。令人困惑的部分是 pip 告诉我我安装了 2.0.1 版本,但是当我运行

pip install sqlalchemy==2.0.0
时,我得到了
Found existing installation: SQLAlchemy 1.4.39
。看起来您可能已经尝试过此操作,但如果这对其他遇到此问题的人有效,我想这是一个胜利。

© www.soinside.com 2019 - 2024. All rights reserved.