首页 > 解决方案 > 如何使用 Python 在 AWS Lambda 上运行 SQLAlchemy

问题描述

我为连接到外部 MySQL 数据库服务器准备了非常简单的文件,如下所示:

from sqlalchemy import *

def run(event, context):
    sql = create_engine('mysql://root:root@127.0.0.1/scraper?charset=utf8');
    metadata = MetaData(sql)

    print(sql.execute('SHOW TABLES').fetchall())

在 AWS 上不起作用,但 Windows 上的 localy 可以完美运行。

接下来,我安装pip install sqlalchemy --target my/dir并准备 ZIP 文件以将包上传到 AWS Lambda。

运行,但消息失败No module named 'MySQLdb': ModuleNotFoundError

然后,我使用pip install mysqlclient --target my/dir创建 ZIP 并再次上传到 AWS Lambda。

运行,但有新的失败消息cannot import name '_mysql': ImportError

那么,我现在应该怎么办?

标签: pythonmysqlamazon-web-servicesaws-lambdamysql-python

解决方案


SQLAlchemy 包括许多用于各种后端的方言实现。SQLAlchemy 包含最常见数据库的方言;少数其他人需要额外安装单独的方言。

MySQL 方言使用 mysql-python 作为默认 DBAPI。有许多 MySQL DBAPI 可用,包括 MySQL-connector-python 和 OurSQL

而不是mysql你可以使用mysql+mysqlconnector

sql = create_engine('mysql+mysqlconnector://root:root@127.0.0.1/scraper?charset=utf8')

然后使用:

pip install mysql-connector --target my/dir

创建 Zip 并再次上传到 AWS Lambda。


推荐阅读