Windows 10开发者必看:LangChain连接本地MySQL数据库完全教程

云信安装大师
90
AI 质量分
11 5 月, 2025
3 分钟阅读
0 阅读

Windows 10开发者必看:LangChain连接本地MySQL数据库完全教程

引言

在AI应用开发中,LangChain已成为连接语言模型与外部数据的重要框架。本教程将手把手教你如何在Windows 10环境下,使用Python的LangChain库连接本地MySQL数据库。无论你是要构建智能问答系统还是数据分析工具,这个技能都非常实用。

准备工作

在开始之前,请确保你的Windows 10系统已安装以下组件:

  1. Python 3.7或更高版本
  2. MySQL Server(推荐8.0+版本)
  3. MySQL Workbench(可选,用于可视化操作)

环境检查

打开命令提示符(CMD),执行以下命令检查环境:

代码片段
python --version
pip --version
mysql --version

如果MySQL命令未识别,请将MySQL的bin目录添加到系统PATH环境变量中。

步骤1:安装必要库

首先安装LangChain和MySQL连接器:

代码片段
pip install langchain mysql-connector-python python-dotenv
  • langchain: LangChain核心库
  • mysql-connector-python: MySQL官方Python连接器
  • python-dotenv: 用于管理环境变量

步骤2:创建并配置MySQL数据库

  1. 启动MySQL服务(可通过服务管理器或命令行)
  2. 登录MySQL创建测试数据库:
代码片段
CREATE DATABASE langchain_demo;
USE langchain_demo;

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10,2)
);

INSERT INTO products (name, description, price) VALUES 
('Laptop', '高性能笔记本电脑', 999.99),
('Phone', '智能手机', 699.99),
('Tablet', '平板电脑', 399.99);

步骤3:设置环境变量

在项目根目录创建.env文件,安全存储数据库凭据:

代码片段
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=yourpassword
MYSQL_DATABASE=langchain_demo

安全提示:永远不要将.env文件提交到版本控制!

步骤4:编写连接代码

创建mysql_langchain.py文件:

代码片段
from langchain.sql_database import SQLDatabase
from langchain.llms import OpenAI
from langchain.chains import SQLDatabaseChain
from dotenv import load_dotenv
import os

# 加载环境变量
load_dotenv()

# MySQL连接配置
db_config = {
    "host": os.getenv("MYSQL_HOST"),
    "port": os.getenv("MYSQL_PORT"),
    "user": os.getenv("MYSQL_USER"),
    "password": os.getenv("MYSQL_PASSWORD"),
    "database": os.getenv("MYSQL_DATABASE"),
}

# 创建SQLDatabase实例
try:
    db = SQLDatabase.from_uri(
        f"mysql+mysqlconnector://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}"
    )
    print("成功连接到MySQL数据库!")
except Exception as e:
    print(f"连接失败: {e}")
    exit()

# 初始化LLM (这里使用OpenAI,你需要自己的API key)
llm = OpenAI(temperature=0, openai_api_key="your-openai-api-key")

# 创建SQL数据库链
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)

# 示例查询1:获取所有产品名称和价格
response = db_chain.run("列出所有产品的名称和价格")
print(response)

# 示例查询2:查找价格低于500的产品
response = db_chain.run("哪些产品价格低于500?")
print(response)

代码解释:

  1. SQLDatabase: LangChain提供的数据库抽象类,支持多种SQL数据库
  2. SQLDatabaseChain: LangChain的链式结构,将LLM与SQL数据库连接起来
  3. verbose=True: 启用详细输出,便于调试查询过程

步骤5:运行测试

执行脚本:

代码片段
python mysql_langchain.py

预期输出示例:

代码片段
成功连接到MySQL数据库!
> Entering new SQLDatabaseChain chain...
列出所有产品的名称和价格  
SQLQuery: SELECT name, price FROM products;
SQLResult: [('Laptop', Decimal('999.99')), ('Phone', Decimal('699.99')), ('Tablet', Decimal('399.99'))]
Answer: 
产品名称和价格如下:
- Laptop: $999.99  
- Phone: $699.99  
- Tablet: $399.99  
> Finished chain.

> Entering new SQLDatabaseChain chain...
哪些产品价格低于500?
SQLQuery: SELECT name FROM products WHERE price < 500;
SQLResult: [('Tablet',)]
Answer: 
价格低于500的产品是Tablet。
> Finished chain.

高级用法:自定义提示模板

修改默认的SQL查询提示可以提高准确性:

代码片段
from langchain.prompts.prompt import PromptTemplate

_DEFAULT_TEMPLATE = """给定一个输入问题,首先创建一个语法正确的MySQL查询来运行,
然后查看查询结果并返回答案。
除非用户指定具体数量,否则最多返回{top_k}条结果。
使用以下格式:

Question: "问题内容"
SQLQuery: "要执行的SQL查询"
SQLResult: "查询结果"
Answer: "最终答案"

只使用以下表:
{table_info}

Question: {input}"""

CUSTOM_PROMPT = PromptTemplate(
    input_variables=["input", "table_info", "top_k"],
    template=_DEFAULT_TEMPLATE,
)

db_chain = SQLDatabaseChain.from_llm(
    llm, 
    db, 
    prompt=CUSTOM_PROMPT,
    verbose=True,
    top_k=5,
)

Windows特有注意事项

  1. MySQL服务启动问题

    • Win+R输入services.msc找到MySQL服务手动启动
    • 或使用命令:net start mysql
  2. 端口冲突

    • Windows上3306端口可能被占用
    • netstat -ano | findstr :3306查看占用进程
    • taskkill /PID <进程ID> /F终止进程或修改MySQL端口
  3. 防火墙设置

    • Windows Defender可能会阻止Python访问本地网络
    • 控制面板 > Windows Defender防火墙 > 允许应用通过防火墙
  4. 路径问题

    代码片段
    # Windows路径处理示例(如果需要加载文件)
    import os.path as path  
    config_path = path.join(path.dirname(__file__), 'config.json')
    

常见问题解决

Q1: mysql-connector-python安装失败
解决方案:

代码片段
pip install --upgrade pip setuptools wheel 
pip install mysql-connector-python==8.0.* #指定版本 

Q2: Authentication plugin 'caching_sha2_password' cannot be loaded
解决方案:

代码片段
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

Q3: LangChain执行复杂查询时出错
调试方法:

代码片段
db_chain.debug = True #显示完整中间过程 
print(db.get_table_info()) #检查表结构是否正确加载 

总结

通过本教程你学会了:
1️⃣ Windows下配置Python+MySQL开发环境
2️⃣ LangChain连接MySQL的基本方法
3️⃣ SQLDatabaseChain的使用技巧
4️⃣ Windows特有的配置问题和解决方案

下一步可以尝试:
– [ ] MySQL视图与LangChain集成
– [ ] MySQL存储过程调用
– [ ] Python异步IO优化数据库访问

完整项目代码已上传GitHub:[示例仓库链接]

欢迎在评论区分享你的实现经验或遇到的问题!

原创 高质量