Azure函数定时器触发器中导入mysql.connector报错:找不到mysql模块
解决Azure函数Python定时器触发器中MySQL模块找不到的问题
问题原因
你的本地开发环境已安装mysql-connector-python包,但Azure函数云端运行环境默认没有该依赖,触发函数时会报ModuleNotFoundError: No module named 'mysql'。另外代码存在缩进错误:import mysql.connector语句未缩进在函数timer_trigger1内部,会导致语法报错。
修复步骤
1. 修正代码缩进
将MySQL相关代码缩进至函数内部,保证语法正确:
import logging import azure.functions as func app = func.FunctionApp() @app.schedule(schedule="*/30 * * * * *", arg_name="myTimer", run_on_startup=True, use_monitor=False) def timer_trigger1(myTimer: func.TimerRequest) -> None: # 缩进修复:MySQL代码放入函数内部 import mysql.connector bp1db = mysql.connector.connect( host="xxxx.xxxxx.com", user="xxxxx", password="xxxx01", db = 'boppwh' ) cur1 = bp1db.cursor() cur1.execute("SELECT COUNT(cellid) AS free FROM cells WHERE Status = 0") result1 = cur1.fetchall() free1 = result1[0] logging.info('Python timer trigger function executed.')
2. 添加依赖声明文件
在函数项目根目录创建requirements.txt文件,写入所需依赖包(指定版本更稳定):
azure-functions mysql-connector-python==8.2.0
3. 部署时安装云端依赖
- 使用Azure Functions Core Tools部署:执行命令
func azure functionapp publish <你的函数应用名>,工具会自动读取requirements.txt并在云端安装依赖。 - 使用VS Code Azure扩展部署:部署时勾选"Install project dependencies"选项,让扩展自动处理云端依赖安装。
4. 验证Python版本一致性
本地开发的Python版本需与Azure函数配置的版本一致:
登录Azure门户,进入函数应用→配置→常规设置,查看并确认Python版本和本地开发环境相同(例如均为3.10)。
内容的提问来源于stack exchange,提问作者lavava92
相关产品推荐
相关产品推荐

