为什么Langchain SQL数据库连接只检测到少数现有表?

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

我已成功连接到如下所示的 Redshift 数据库并获取了所有表名称;

conn = psycopg2.connect(host,db,port,username,password)
cursor.execute("SELECT tablename FROM pg_tables GROUP BY tablename ORDER BY tablename")

但是,当我使用 langchain 和 sqlalchemy 进行连接时,如下所示,get_usable_table_names 返回数据库中许多表中的几个;

pg_url = f"postgresql+psycopg2://{db_user}:{db_password}@{db_host}:{port_}/{db_}"
db_engine = create_engine(pg_url)
db = SQLDatabase(db_engine)
llm = OpenAI(temperature=0.0, openai_api_key=OPENAI_API_KEY, model='gpt-3.5-turbo')

table_names = "\n".join(db.get_usable_table_names())

有人对可能出现的问题有任何建议吗?

我尝试通过以下方式查询丢失的表;

db.run("SELECT * FROM db_schema.missing_table_name") 

这有效。但是,我需要 langchain.sql_database 模块中的 SQLDatabase 来正确检测表,而无需一一指定。 (因为我想使用 Langchain 和 OpenAI 与 Sql 数据库聊天)

sql sqlalchemy amazon-redshift openai-api langchain
1个回答
0
投票

您是否尝试使用

verbose: true
来查看提示中输入的内容?

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