如何使用Python访问LangChain中CREATE语句之外的Oracle列注释?

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

我正在使用一个 Oracle 数据库,该数据库利用列注释来解释神秘的列名称。这些注释在 Oracle SQL Developer 中可见,但放置在

CREATE
表语句之外:

COMMENT ON COLUMN "SCHEMA"."TABLE_NAME"."COLUMN_NAME" IS 'Column which contains information X. Distinct values: ("A", "B", "C")';

我正在使用

LangChain
与数据库交互,目前,它无法访问这些注释,因为它们不包含在
CREATE
语句中。我如何修改我的方法以便
LangChain
可以阅读这些评论?这对于
LangChain
准确确定要使用哪些列至关重要。

这是我目前如何通过

LangChain
连接和使用数据库:

from cx_Oracle import makedsn
#from langchain_community.utilities import SQLDatabase <-- Deprecated
from langchain.sql_database import SQLDatabase 

dsn_tns = makedsn(host=host, port=port, service_name=service_name)
connection_string = f"oracle+cx_oracle://{usr}:{pwd}@{dsn_tns}"
db = SQLDatabase.from_uri(connection_string)
print("Dialect:", db.dialect)

# Test db connection
try:
    print(f"Database connection is successful, sysdate is {db.run('select sysdate from dual')}")
except Exception as e:
    print(f"There was a problem with the database connection: {e}")

这就是我到目前为止使用

LangChain
的方式:

#from langchain_community.agent_toolkits import create_sql_agent # <-- Deprecated
from langchain.agents import create_sql_agent 
from langchain.agents.agent_toolkits import SQLDatabaseToolkit

toolkit = SQLDatabaseToolkit(db=db,llm=chat_client)
agent_executor = create_sql_agent(llm=chat_client,
                                  toolkit=toolkit,
                                  agent_type="openai-tools",
                                  verbose=True,
                                  return_intermediate_steps=True)
python oracle oracle-sqldeveloper langchain py-langchain
1个回答
0
投票

我不知道你们的

langchain
产品的功能。但如果你能执行SQL语句,你就可以查询数据字典。所以简单查询:

select * from all_tab_comments where owner = 'MYSCHEMA' AND table_name = 'MYTABLE' -- table level comments

select * from all_col_comments where owner = 'MYSCHEMA' AND table_name = 'MYTABLE' -- column level comments

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