我准备一个非常简单的文件,用于连接到外部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上的本地语言运行良好。
接下来,我通过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
。
那么,我现在应该做什么?
答案 0 :(得分:2)
SQLAlchemy包括许多用于各种后端的Dialect实现。 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。