使用 python pyodbc 库创建 AWS Lambda 函数,引发错误"模块'pyodbc'没有属性'连接'



我正在尝试创建一个简单的 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.zippythonlibpython3.7site-packagespyodbcpyodbc存在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'和打印(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 层不包含所需的包。您可以从以下链接下载文件,将 zip 上传到 lambda 层,然后再次尝试连接。

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

希望它有效。

这里的错误似乎来自pyodbc.Connect. 你有pyodbc.Connect而不是pyodbc.connect.您的C是大写字母而不是小写字母c

所以这将起作用:

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)

最新更新