create_engine 在 sqlalchemy 中无法在 python aws lambda 的 3.6 运行时中工作
create_engine in sqlalchemy not working in python 3.6 runtime for aws lambda
我使用 python 3.6 在 Amazon Linux docker 映像中成功测试了 pandas、numpy 和 sqlalchemy。我能够使用 python 3.6 中 sqlalchemy
模块的 create_engine
在虚拟环境中导入、使用和连接数据库。
然后我导出了所有依赖项并在 AWS Lambda 中构建了一个 python 部署包到 运行 但由于某种原因我在 lambda 中不断收到 create_engine
的错误。
module 'sqlalchemy' has no attribute 'create_engine': AttributeError
这是我的代码:
import pandas as pd
import numpy as np
import sqlalchemy
from datetime import datetime, timedelta
def lambda_handler(event, context):
engine = sqlalchemy.create_engine("DB_URI")
return "Hello world!"
但是,如果我简单地注释掉调用 create_engine
的行,我会得到 "Hello world!" 响应。
我不明白为什么 create_engine
在相同的 docker 环境中工作得很好,但它不能在这个环境中工作。有什么想法吗?
我明白了。我在压缩文件时犯了一个新手错误,没有使用 -r
选项,这意味着只有 python 模块文件夹的顶层才会被压缩。这解释了为什么我没有收到导入错误,但 none 的实际方法有效。
重申一下,解决方案是在我的 zip
操作中添加 -r
选项以递归添加所有文件:
zip -r package.zip *
我使用 python 3.6 在 Amazon Linux docker 映像中成功测试了 pandas、numpy 和 sqlalchemy。我能够使用 python 3.6 中 sqlalchemy
模块的 create_engine
在虚拟环境中导入、使用和连接数据库。
然后我导出了所有依赖项并在 AWS Lambda 中构建了一个 python 部署包到 运行 但由于某种原因我在 lambda 中不断收到 create_engine
的错误。
module 'sqlalchemy' has no attribute 'create_engine': AttributeError
这是我的代码:
import pandas as pd
import numpy as np
import sqlalchemy
from datetime import datetime, timedelta
def lambda_handler(event, context):
engine = sqlalchemy.create_engine("DB_URI")
return "Hello world!"
但是,如果我简单地注释掉调用 create_engine
的行,我会得到 "Hello world!" 响应。
我不明白为什么 create_engine
在相同的 docker 环境中工作得很好,但它不能在这个环境中工作。有什么想法吗?
我明白了。我在压缩文件时犯了一个新手错误,没有使用 -r
选项,这意味着只有 python 模块文件夹的顶层才会被压缩。这解释了为什么我没有收到导入错误,但 none 的实际方法有效。
重申一下,解决方案是在我的 zip
操作中添加 -r
选项以递归添加所有文件:
zip -r package.zip *