You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyodbc连接SQL Server报08001错误,需创建LangChain SQL Agent

解决LangChain SQL Agent连接数据库的问题

核心问题分析

你提到用mysql.connector可以正常连接数据库,但用pyodbc连接SQL Server时失败,这说明你的数据库实际是MySQL,而非SQL Server——pyodbc是针对SQL Server的连接工具,用来连MySQL自然会报错。

解决方案:直接用MySQL适配LangChain

LangChain的SQLDatabase支持通过SQLAlchemy连接MySQL,无需依赖pyodbc。按以下步骤修改代码:

  1. 安装必要依赖(如果未安装):
pip install sqlalchemy mysql-connector-python langchain openai
  1. 修改代码,使用MySQL的SQLAlchemy连接:
from sqlalchemy import create_engine
from langchain.sql_database import SQLDatabase
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.llms.openai import OpenAI

# 替换为你的MySQL数据库配置
db_config = {
    'user': 'my_user',
    'password': 'my_password',
    'host': 'my_server',
    'database': 'my_database',
}

# 构建MySQL的SQLAlchemy连接字符串
connection_str = f"mysql+mysqlconnector://{db_config['user']}:{db_config['password']}@{db_config['host']}/{db_config['database']}"
engine = create_engine(connection_str)

# 创建SQLDatabase实例
db = SQLDatabase(engine)

# 创建Agent Executor
toolkit = SQLDatabaseToolkit(db=db)
agent_executor = create_sql_agent(
    llm=OpenAI(temperature=0),
    toolkit=toolkit,
    verbose=True
)

若确实是SQL Server的排查方向

如果你的数据库确实是SQL Server,那需要排查以下几点:

  • 确认服务器地址格式正确,若使用非默认端口(1433),需加上端口号,例如:SERVER=my_server,1433
  • 检查SQL Server是否开启了远程连接权限
  • 确认防火墙开放了SQL Server对应的端口
  • 更换为最新的ODBC驱动,例如将驱动改为ODBC Driver 17 for SQL Server,旧的SQL Server驱动兼容性较差

内容的提问来源于stack exchange,提问作者Prvind Panday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:22:41