我是 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
我刚刚重新安装了软件包并指定了版本 2.0.0。令人困惑的部分是 pip 告诉我我安装了 2.0.1 版本,但是当我运行
pip install sqlalchemy==2.0.0
时,我得到了 Found existing installation: SQLAlchemy 1.4.39
。看起来您可能已经尝试过此操作,但如果这对其他遇到此问题的人有效,我想这是一个胜利。