我已成功连接到如下所示的 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 数据库聊天)
您是否尝试使用
verbose: true
来查看提示中输入的内容?