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

上传AWS Lambda函数报错:Runtime.ImportModuleError,缺失mysql模块

问题解决:无法导入mysql模块并存储JSON数据到数据库

1. 修复"No module named 'mysql'"错误

这个错误是因为Python运行环境中缺少MySQL驱动包,常用的两个驱动包及安装命令如下:

  • 安装mysql-connector-python(官方驱动):
    pip install mysql-connector-python
    
  • 或者安装pymysql(第三方驱动):
    pip install pymysql
    

如果是部署到云函数(如AWS Lambda),需将依赖包与代码打包上传,或使用云平台的依赖层功能管理第三方库。

2. 解析JSON并写入MySQL数据库

第一步:创建数据库表

先在MySQL中创建对应的数据表,示例表结构如下(可根据需求调整字段类型):

CREATE TABLE energy_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tensao DECIMAL(10,7),
    corrente DECIMAL(10,7),
    potencia DECIMAL(10,7),
    energia_consumida DECIMAL(10,7),
    frequencia DECIMAL(10,7),
    fator_potencia DECIMAL(10,7),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

第二步:Python代码实现数据存储

以下是使用mysql-connector-python的示例代码,替换配置信息后即可运行:

import mysql.connector
import json

# 数据库连接配置,替换为你的实际信息
db_config = {
    'user': 'your_username',
    'password': 'your_password',
    'host': 'your_db_host',
    'database': 'your_db_name',
    'raise_on_warnings': True
}

# 待存储的JSON数据
raw_data = {
  "Tensão": {"isLosslessNumber": True, "value": "127.5999985"},
  "Corrente": {"isLosslessNumber": True, "value": "0.02"},
  "Potência": {"isLosslessNumber": True, "value": "0"},
  "Energia Consumida": {"isLosslessNumber": True, "value": "0.189999998"},
  "Frequência": {"isLosslessNumber": True, "value": "59.90000153"},
  "Fator de Potência": {"isLosslessNumber": True, "value": "0"}
}

# 解析JSON,提取数值并转换为浮点型
processed_data = {
    'tensao': float(raw_data['Tensão']['value']),
    'corrente': float(raw_data['Corrente']['value']),
    'potencia': float(raw_data['Potência']['value']),
    'energia_consumida': float(raw_data['Energia Consumida']['value']),
    'frequencia': float(raw_data['Frequência']['value']),
    'fator_potencia': float(raw_data['Fator de Potência']['value'])
}

try:
    # 建立数据库连接
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()

    # 插入数据SQL
    insert_sql = """
    INSERT INTO energy_data (tensao, corrente, potencia, energia_consumida, frequencia, fator_potencia)
    VALUES (%(tensao)s, %(corrente)s, %(potencia)s, %(energia_consumida)s, %(frequencia)s, %(fator_potencia)s)
    """

    # 执行插入并提交事务
    cursor.execute(insert_sql, processed_data)
    conn.commit()
    print("数据已成功写入数据库")

except mysql.connector.Error as e:
    print(f"数据库操作失败: {e}")
    conn.rollback()

finally:
    # 关闭连接
    if conn.is_connected():
        cursor.close()
        conn.close()
        print("数据库连接已关闭")

注意事项

  • 务必替换db_config中的数据库用户名、密码、地址及库名为实际值
  • 如果使用pymysql,只需将mysql.connector替换为pymysql,其余操作逻辑基本一致
  • 若JSON中的数值可能存在非数字情况,需添加额外的类型校验逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:37:09