在 Python 中导入 mysql.connector 在计时器触发器 Azure 函数中不起作用

import mysql.connector in python won't work in timer trigger azure function

提问人:lavava92 提问时间:11/17/2023 最后编辑:karellavava92 更新时间:11/20/2023 访问量:64

问:

我试图使用 MySQL 数据库通过 Azure 函数中的计时器触发器在 Python 中生成定期摘要报告。使用 import mysql.connector 的 Python 代码使我的查询数据自行正常工作。但是,当我在触发器操作中插入这部分代码时,我得到了 ModuleNotFoundError: No module named 'mysql'。

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:

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.')
Python Azure 函数 触发 计时器

评论

0赞 Dasari Kamali 11/17/2023
你能在问题中分享你的代码吗?
0赞 Community 11/17/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。

答:

0赞 Dasari Kamali 11/20/2023 #1

我将import mysql.connector添加到代码中的导入中,并能够触发计时器触发器功能。

法典:

import logging
import azure.functions as func
import mysql.connector

app = func.FunctionApp()

@app.schedule(schedule="*/30 * * * * *", arg_name="myTimer", run_on_startup=True,
              use_monitor=False) 
def timer_trigger1(myTimer: func.TimerRequest) -> None:
    bp1db = mysql.connector.connect(
        host="<server_name>.mysql.database.azure.com",
        user="<user_name>",
        password="<password>",
        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.')

要求.txt :

azure-functions
mysql-connector-python

输出:

它成功运行并触发定时器触发功能,如下所示。

enter image description here