使用 python pyodbc 库创建 AWS Lambda 函数抛出错误“模块 'pyodbc' 没有属性‘connect’

Creating AWS Lambda function using python pyodbc library throw an error "module 'pyodbc' has no attribute ' connect'

我正在尝试创建一个简单的 Lambda 函数来查询 AWS RDS SQL 服务器的 msdb 以监控失败的作业。我从 https://github.com/Miserlou/lambda-packages/tree/master/lambda_packages/pyodbc 下载了 python 模块 pyodbc 将文件类型从 .tar.gz 更改为 zip 并提取两个文件 libodbc.so.2 和 pyodbc.so 然后我将这两个文件放在结构如下的 zip 文件夹中 pythonjob.zip\python\lib\python3.7\site-packages\pyodbcpyodbc 存在 libodbc.so.2pyodbc.so 然后我将 pythonjob.zip 文件上传到 Lambda 层并测试了我的脚本

import pyodbc
print(dir(pyodbc))

#ConnectionValues

endpoint = 'myservername.us-east-2.rds.amazonaws.com'
username = 'username'
password = 'password'
database_name = 'msdb'
conn = pyodbc.Connect( server= endpoint, user= username, password=password, database= database_name)

但是我收到错误 [ERROR] AttributeError: module 'pyodbc' has no attribute 'Connect' 并且 print(dir(pyodbc)) 打印 ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

我不知道现在该做什么。感谢您的帮助。谢谢!

@Esu 请将连接语句更改为以下:

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+endpoint+';DATABASE='+database_name+';UID='+username+';PWD='+ password)

此外,您正在使用的 lambda 层不包含所需的包。您可以从下面link下载文件,将zip上传到lambda层,然后重试连接。

https://github.com/alexanderluiscampino/lambda-layers/blob/master/pyodbc-9ef8961d-ce5b-4603-b397-03c9a6316eca.zip

希望有用。