Windows 11手把手教程:MySQL 8.0与LangChain集成开发环境配置

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

Windows 11手把手教程:MySQL 8.0与LangChain集成开发环境配置

引言

在AI应用开发中,将大型语言模型(LLM)与数据库系统集成是一个常见需求。本教程将指导你在Windows 11系统上配置MySQL 8.0数据库,并将其与LangChain框架集成,为后续的AI应用开发打下基础。

准备工作

环境要求

  • Windows 11操作系统
  • Python 3.8或更高版本
  • MySQL 8.0 Community Server
  • 至少4GB可用内存

前置知识

  • 基本的命令行操作
  • Python基础语法
  • SQL基本概念

第一部分:MySQL 8.0安装与配置

步骤1:下载MySQL安装包

  1. 访问MySQL官方下载页面:https://dev.mysql.com/downloads/installer/
  2. 选择”MySQL Installer for Windows”下载(约450MB)

步骤2:安装MySQL Server

代码片段
# 以管理员身份运行安装程序
# 选择"Custom"安装类型
# 添加以下组件:
#   - MySQL Server 8.0.x
#   - MySQL Workbench (可选,图形化管理工具)
#   - MySQL Shell (可选,命令行工具)

注意事项
– 安装路径不要包含中文或特殊字符
– Windows Defender可能会阻止安装,需临时关闭或添加例外

步骤3:配置MySQL Server

  1. 认证方式选择

    • 推荐:使用强密码加密认证(推荐)
  2. 设置root密码

    代码片段
    建议密码复杂度:
    - 至少12个字符
    - 包含大小写字母、数字和特殊符号
    示例:MySql8@LangChain_2023!
    
  3. Windows服务配置

    • MySQL服务名保持默认:”MySQL80″
    • 设置为开机自动启动(可选)

步骤4:验证安装

代码片段
# 打开命令提示符或PowerShell测试连接
mysql -u root -p

# 成功连接后执行以下SQL查看版本信息
SELECT VERSION();

常见问题解决
1. “mysql不是内部或外部命令”错误:

代码片段
# MySQL未添加到系统PATH中,需要手动添加或使用完整路径:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -u root -p<br>
   

  1. “Access denied”错误:
    代码片段
    # root密码错误或用户不存在,可尝试重置密码:
    mysqld --init-file=C:\\mysql-init.txt --console<br>
    

第二部分:Python环境准备

步骤1:创建虚拟环境

代码片段
# Python虚拟环境创建(推荐使用Anaconda)
conda create -n langchain-mysql python=3.9
conda activate langchain-mysql

# OR使用venv模块(Python自带)
python -m venv langchain-mysql-env
.\langchain-mysql-env\Scripts\activate

步骤2:安装必要包

代码片段
pip install langchain openai mysql-connector-python python-dotenv sqlalchemy pymysql cryptography tiktoken

包说明
langchain: AI应用开发框架核心库
mysql-connector-python: MySQL官方Python驱动
python-dotenv: .env配置文件支持
sqlalchemy: ORM工具
cryptography: MySQL加密依赖

第三部分:LangChain与MySQL集成配置

步骤1:创建测试数据库和表

代码片段
-- MySQL Workbench或命令行中执行以下SQL:
CREATE DATABASE langchain_demo;
USE langchain_demo;

CREATE TABLE articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT,
    author VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    embedding LONGTEXT COMMENT '存储向量嵌入'
);

--插入测试数据(供后续演示使用)
INSERT INTO articles (title, content, author) VALUES 
('AI的未来', '人工智能正在改变世界...', '张伟'),
('数据库优化', '如何优化你的SQL查询...', '李娜'),
('机器学习入门', '监督学习与非监督学习...', '王强');

步骤2:创建Python连接脚本

创建db_connect.py文件:

代码片段
import os
from dotenv import load_dotenv
from sqlalchemy import create_engine, text

# Load environment variables from .env file (建议将敏感信息存储在.env中)
load_dotenv()

def get_mysql_connection():
    """获取MySQL数据库连接"""
    db_config = {
        'host': os.getenv('DB_HOST', 'localhost'),
        'port': int(os.getenv('DB_PORT', '3306')),
        'user': os.getenv('DB_USER', 'root'),
        'password': os.getenv('DB_PASSWORD', ''),
        'database': os.getenv('DB_NAME', 'langchain_demo')
    }

    # SQLAlchemy连接字符串格式: mysql+mysqlconnector://user:password@host:port/database 
    connection_string = f"mysql+mysqlconnector://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}"

    try:
        engine = create_engine(connection_string, pool_recycle=3600)
        conn = engine.connect()
        print("✅ MySQL连接成功!")
        return conn

    except Exception as e:
        print(f"❌ MySQL连接失败: {e}")
        return None

if __name__ == "__main__":
    conn = get_mysql_connection()

    # Test query (验证连接是否正常)
    if conn:
        result = conn.execute(text("SELECT * FROM articles LIMIT,1"))
        print("测试查询结果:", result.fetchone())
        conn.close()

对应的.env文件内容:

代码片段
DB_HOST=localhost 
DB_PORT=3306 
DB_USER=root 
DB_PASSWORD=MySql8@LangChain_2023! 
DB_NAME=langchain_demo 

安全提示
1. .env文件应加入.gitignore
2. MySQL用户应限制为仅具有必要权限的专用用户而非root

Step3: LangChain SQLDatabase集成示例

创建langchain_mysql.py文件:

“`python from langchain import OpenAI, SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain

def setuplangchainwith_mysql():
“””配置LangChain与MySQL的集成”””

代码片段
# Load environment variables     
load_dotenv()      

# Initialize database connection     
db = SQLDatabase.from_uri(         
    f"mysql+mysqlconnector://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@"         
    f"{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"     
)      

# Initialize LLM (这里使用OpenAI GPT模型)     
llm = OpenAI(temperature=0, openai_api_key=os.getenv("OPENAI_API_KEY"))      

# Create database chain     
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)      

return db_chain

def runquery(dbchain, question):
“””执行自然语言查询”””
print(f”\n🔍 Question: {question}”)
try:
result = db_chain.run(question)
print(f”💡 Answer: {result}”)
except Exception as e:
print(f”❌ Error: {str(e)}”)

if name == “main“:
# Example usage
dbchain = setuplangchainwithmysql()

代码片段
questions = [         
    "articles表中有多少条记录?",         
    "列出所有文章的作者",         
    "谁写了关于机器学习入门的文章?"     
]      

for q in questions:         
run_query(db_chain, q)
代码片段

## Part4: Advanced Integration (向量存储)

对于需要向量搜索的场景,我们可以扩展为:

```python from langchain.vectorstores import FAISS 
from langchain.document_loaders import SQLDatabaseLoader 

def setup_vector_store():     
"""从MySQL数据创建向量存储"""     

loader = SQLDatabaseLoader(         
    f"mysql+mysqlconnector://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@"         
    f"{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}",          
query="SELECT id, title, content FROM articles;"     )      

docs = loader.load()        

embeddings = OpenAIEmbeddings()         

vectorstore = FAISS.from_documents(docs, embeddings)        

return vectorstore  

def semantic_search(vectorstore):     
"""语义搜索示例"""        

query = "我想学习人工智能的基础知识"         

docs = vectorstore.similarity_search(query)         

print(f"\n🔍 Search results for '{query}':")         

for i, doc in enumerate(docs):              
    print(f"\n📄 Result {i+1}:")                 
    print(f"- Title: {doc.metadata['title']}")              
    print(f"- Content snippet: {doc.page_content[:100]}...")

Key Takeaways

完整环境搭建流程:
1️⃣ MySQL服务器安装 →
2️⃣ Python虚拟环境 →
3️⃣ LangChain依赖 →
4️⃣ DB连接测试

⚠️ 关键注意事项:
• MySQL root密码强度必须足够高
.env文件必须妥善保护不提交到Git
• OpenAI API Key需要单独申请

🔧 扩展方向:
• [ ] Docker容器化部署
• [ ] Jupyter Notebook集成开发

原创 高质量