如何在 Python 中 运行 AWS Lambda 上的 SQLAlchemy
How to run SQLAlchemy on AWS Lambda in Python
我准备了非常简单的文件来连接到外部 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
。
那么,我现在应该做什么?
SQLAlchemy includes many Dialect implementations for various backends.
Dialects for the most common databases are included with SQLAlchemy; a
handful of others require an additional install of a separate dialect.
The MySQL dialect uses mysql-python as the default DBAPI. There are
many MySQL DBAPIs available, including MySQL-connector-python and
OurSQL
您可以使用 mysql+mysqlconnector
而不是 mysql
sql = create_engine('mysql+mysqlconnector://root:root@127.0.0.1/scraper?charset=utf8')
然后使用:
pip install mysql-connector --target my/dir
创建 Zip 并再次上传到 AWS Lambda。
我准备了非常简单的文件来连接到外部 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
。
那么,我现在应该做什么?
SQLAlchemy includes many Dialect implementations for various backends. Dialects for the most common databases are included with SQLAlchemy; a handful of others require an additional install of a separate dialect.
The MySQL dialect uses mysql-python as the default DBAPI. There are many MySQL DBAPIs available, including MySQL-connector-python and OurSQL
您可以使用 mysql+mysqlconnector
mysql
sql = create_engine('mysql+mysqlconnector://root:root@127.0.0.1/scraper?charset=utf8')
然后使用:
pip install mysql-connector --target my/dir
创建 Zip 并再次上传到 AWS Lambda。