Langchain:无法使用langchain SQLDatabasechain和oracle数据库访问同义词、视图中的表名

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

我是这个langchain的新手。在这里,我想要构建的是一个文本到 SQL 的应用程序。但我无法使用 langchain SQLDatabasechain 访问表名,这些表名是同义词、视图。有人能帮我解决这个问题吗? 这是代码。请看一下并告诉我哪里出错了。

import os
import sys
import cx_Oracle
from langchain.utilities import SQLDatabase
from langchain.llms import OpenAI
from langchain_experimental.sql import SQLDatabaseChain
from sqlalchemy import create_engine

import constants       #Importing OpenAPIKey from constants file
os.environ["OPENAI_API_KEY"] = constants.APIKEY


# Declaring Database Details
IP="IP Address"
PORT="POSRT"
servicename="ORACLE_SERVICENAME"
username="USERNAME"
password="PASSWORD"


# Developing the oracle Connection
oracle_connection_string_fmt = (f'oracle+cx_oracle://{username}:{password}@' +  cx_Oracle.makedsn(f'{IP}', f'{PORT}', service_name=f'{servicename}'))
url = oracle_connection_string_fmt.format(username=username, password=password, hostname=IP, port=PORT, service_name=servicename,)

engine=create_engine(url, echo=True)
db = SQLDatabase(engine)
llm = OpenAI(temperature=0.01, verbose=True)

db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)

while True:
    query = input("Query Please: ")  # query = "Is employee code 7365 exist or not?"
    if query in ('q', 'quit', 'exit'):
        break
        sys.exit()
    value = db_chain.run(query)
    print(value)
python-3.x oracle-sqldeveloper openai-api langchain
1个回答
0
投票

您只需将上面的语法更改为:

from langchain.utilities import SQLDatabase

oracle_connection_string_fmt = SQLDatabase.from_uri(f"oracle+cx_oracle://{userName}:password}@{host}/{service_name}",sample_rows_in_table_info=3)
© www.soinside.com 2019 - 2024. All rights reserved.