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

AWS Lambda函数报错No module named 'MySQLdb'求技术解决方案

AWS Lambda执行报错:No module named 'MySQLdb'

问题详情

我的AWS Lambda函数代码如下:

import pandas as pd
import numpy as np
from sqlalchemy import create_engine


def lambda_handler(event, context):
   
    data = [10,20,30,40,50,60]
    df = pd.DataFrame(data, columns=['Numbers'])
    
    engine = create_engine('mysql://admin:blabla@database-1.blabla.eu-west 1.rds.amazonaws.com/blablabla')

    df.to_sql('list_last_update_lambda', con=engine, if_exists='replace')
    
    return()

已配置两个Lambda层,分别包含Pandas+NumPy、SQLAlchemy依赖,但函数执行时日志报错:

"errorMessage": "No module named 'MySQLdb'",
"errorType": "ModuleNotFoundError"

解决方案

报错原因是SQLAlchemy默认使用MySQLdb作为MySQL驱动,但Lambda运行环境中没有该模块,且现有层也未包含它。解决步骤如下:

  1. 修改SQLAlchemy连接字符串
    将原连接URL中的mysql://替换为mysql+pymysql://,指定使用pymysql作为驱动(该模块更适配Lambda环境),同时修正地址中的空格问题(eu-west 1改为eu-west-1):

    engine = create_engine('mysql+pymysql://admin:blabla@database-1.blabla.eu-west-1.rds.amazonaws.com/blablabla')
    
  2. 添加包含pymysql的Lambda层
    若现有层未包含pymysql,需创建新层并关联到函数:

    • 准备与Lambda运行时匹配的环境(如Python 3.9,推荐用Docker模拟Amazon Linux 2环境)
    • 执行命令安装pymysql到指定目录:
      mkdir -p python/lib/python3.9/site-packages
      pip install pymysql -t python/lib/python3.9/site-packages/
      
    • 将python目录打包为zip文件
    • 在AWS Lambda控制台上传该zip作为新层,将层关联到你的函数

完成以上操作后重新执行函数即可解决该报错。

内容的提问来源于stack exchange,提问作者Miguel Gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:51:09