Skip to content

Trying to use SQLDatabaseLoader gives error #28349

Open
@JuanSaavedra

Description

Checked other resources

  • I added a very descriptive title to this issue.
  • I searched the LangChain documentation with the integrated search.
  • I used the GitHub search to find a similar question and didn't find it.
  • I am sure that this is a bug in LangChain rather than my code.
  • The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).

Example Code

def  initialise(self):       
    print("initialising...")
    
    connect_Url = URL.create(
        drivername="mssql+pyodbc",
        username=ConfigSettings.userId,
        password=ConfigSettings.password,
        host=ConfigSettings.server,
        database=ConfigSettings.database,
        query={"driver": "ODBC Driver 17 for SQL Server"},
    )
    
    engine = create_engine(connect_Url,echo=False)
    con = engine.connect()
           
    #self.db = SQLDatabase(engine=engine)
    self.db = SQLDatabase.from_uri(connect_Url, include_tables=["TestTable"], sample_rows_in_table_info=2)
    
    #table_names = self.db.get_usable_table_names()
    #print("Number of tables: ", len(table_names))
    
    #response = self.db.run("SELECT top 10 * FROM InvoiceStatus")
    #print(response)
           
    query = "SELECT top 10 * FROM TestTable"
    
    self.llm = OpenAI(api_key=OPENAI_API_KEY)
    
    databaseLoader = SQLDatabaseLoader(db=self.db,query=query)
    docs = databaseLoader.load()
    print("Number of documents: ", len(docs))
    
    print("Exiting...\n\n")

Error Message and Stack Trace (if applicable)

def  initialise(self):       
    print("initialising...")
    
    connect_Url = URL.create(
        drivername="mssql+pyodbc",
        username=ConfigSettings.userId,
        password=ConfigSettings.password,
        host=ConfigSettings.server,
        database=ConfigSettings.database,
        query={"driver": "ODBC Driver 17 for SQL Server"},
    )
    
    engine = create_engine(connect_Url,echo=False)
    con = engine.connect()
           
    #self.db = SQLDatabase(engine=engine)
    self.db = SQLDatabase.from_uri(connect_Url, include_tables=["TestTable"], sample_rows_in_table_info=2)
    
    #table_names = self.db.get_usable_table_names()
    #print("Number of tables: ", len(table_names))
    
    #response = self.db.run("SELECT top 10 * FROM InvoiceStatus")
    #print(response)
           
    query = "SELECT top 10 * FROM TestTable"
    
    self.llm = OpenAI(api_key=OPENAI_API_KEY)
    
    databaseLoader = SQLDatabaseLoader(db=self.db,query=query)
    docs = databaseLoader.load()
    print("Number of documents: ", len(docs))
    
    print("Exiting...\n\n")

Description

Hi there,

I'm new here so apologies if its a silly question.

I'm trying to query the database using the SQLDatabaseLoader but getting an error when calling load().

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')

If I do any arbitrary SQL query, it works fine e.g

#response = self.db.run("SELECT top 10 * FROM InvoiceStatus")
#print(response)

I tried different versions of SQLAlchemy with no luck either..

However, when calling load() it gives the following error:

----------------- RAG Db With OpenAI ----------------
initialising...
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\cursor.py", line 1109, in fetchone
row = dbapi_cursor.fetchone()
^^^^^^^^^^^^^^^^^^^^^^^
pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "E:\Projects\Python\main.py", line 28, in
dbRag1.initialise()
File "E:\Projects\Python\ragWithOpenAI_Database.py", line 82, in initialise
docs = databaseLoader.load()
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\langchain_core\document_loaders\base.py", line 31, in load
return list(self.lazy_load())
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\langchain_community\document_loaders\sql_database.py", line 90, in lazy_load
for i, row in enumerate(result.mappings()):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\result.py", line 508, in iterrows
for raw_row in self._fetchiter_impl():
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\cursor.py", line 2086, in _fetchiter_impl
row = fetchone(self, self.cursor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\cursor.py", line 1114, in fetchone
self.handle_exception(result, dbapi_cursor, e)
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\cursor.py", line 1085, in handle_exception
result.connection._handle_dbapi_exception(
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\base.py", line 2325, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\sqlalchemy\engine\cursor.py", line 1109, in fetchone
row = dbapi_cursor.fetchone()
^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')

Any help would be greatly appreciated.

Thank you all,

J

System Info

System Information

OS: Windows
OS Version: 10.0.22631
Python Version: 3.12.7 (tags/v3.12.7:0b05ead, Oct 1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)]

Package Information

langchain_core: 0.3.21
langchain: 0.3.8
langchain_community: 0.3.8
langsmith: 0.1.146
langchain_experimental: 0.3.3
langchain_text_splitters: 0.3.2

Optional packages not installed

langserve

Other Dependencies

aiohttp: 3.10.10
async-timeout: Installed. No version info available.
dataclasses-json: 0.6.7
httpx: 0.27.2
httpx-sse: 0.4.0
jsonpatch: 1.33
numpy: 1.26.4
orjson: 3.10.11
packaging: 24.1
pydantic: 2.9.2
pydantic-settings: 2.6.1
PyYAML: 6.0.2
requests: 2.32.3
requests-toolbelt: 1.0.0
SQLAlchemy: 2.0.0
tenacity: 8.5.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    investigateFlagged for investigation.staleIssue has not had recent activity or appears to be solved. Stale issues will be automatically closed🤖:bugRelated to a bug, vulnerability, unexpected error with an existing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions