Emi*_*uez 3 python sql-server amazon-web-services aws-lambda
我一直试图使用AWS Lambda函数连接到SQL Server很长一段时间.
为此,我正在尝试使用任何库(尝试使用pyodbc,pypyodbc等),将所有内容打包成zip文件并上传代码.
每个库的代码几乎相同,但错误不同.
代码:
import pypyodbc
def lambda_handler(event, context):
conn = pypyodbc.connect('DRIVER={SQL Server};'
'SERVER=1.1.1.1;'
'DATABASE=dbname;'
'UID=user;'
'PWD=pwd')
cur = conn.cursor()
cur.execute("SELECT * FROM Table")
item_count = 0
for row in cur:
item_count += 1
print(item_count)
cur.close()
conn.close()
return item_count
Run Code Online (Sandbox Code Playgroud)
我已经涉及的常见问题: - 我在zip中添加项目内容,而不是文件夹. - 我还在zip文件中添加了代码运行所需的库.
如果我尝试使用pyodbc,我上传的zip看起来像这样:
.idea (dir)
pyodbc (dir)
lambda_function.py
pyodbc.pyd
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Unable to import module 'lambda_function': No module named pyodbc
Run Code Online (Sandbox Code Playgroud)
经过一段时间的搜索,我找不到任何有用的东西.只有一条评论认为pyodbc需要在linux环境中进行调整才能使lambda函数正常工作.但我没有可用的环境,我也不知道是否会解决这个问题.
如果我尝试使用pypyodbc,我上传的zip看起来像这样:

我得到的错误:
module initialization error: 'ODBC Library is not found. Is LD_LIBRARY_PATH set?'
Run Code Online (Sandbox Code Playgroud)
对于这个我试图安装其他stackoverflow帖子(python-pyodb,unixodbc)建议的多个python包,但我每次都失败了.
然后有一条评论说"确保将本机ODBC库放在zip部署包中的lib文件夹下"
也许这是一些帮助?我不知道如何获取本机ODBC库..
哦,还有最后一件事.如果我从本地计算机运行它们,两个库都可以工作.我可以访问目标服务器.如果我从lambda函数中执行它会失败.
希望有人可以帮助我,显然,整个互联网.
yum install gcc gcc-c++wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.5.tar.gztar xvzf unixODBC-2.3.5.tar.gzcd unixODBC-2.3.5使用正确的sysconfdir值配置它
./configure --sysconfdir=/var/task --disable-gui --disable-drivers --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --prefix=/home
make install[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/var/task/msodbcsql/msodbcsql/lib64/libmsodbcsql-13.1.so.9.1
UsageCount=1
在您的计算机上,在同一根目录下创建文件odbc.ini
[ODBC Driver 13 for SQL Server]
Driver = ODBC Driver 13 for SQL Server
Description = My ODBC Driver 13 for SQL Server
Trace = No
在你的python程序上使用pyodbc:
import pyodbc
def lambda_handler(event, context):
server = "xxxxxxxxxxxxxxxxxxxx"
database = "xxxxxxxxxxxxxxxxxxxx"
username = "xxxxxxxxxxxxxxxxxxxx"
password = "xxxxxxxxxxxxxxxxxxxx"
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
...other things....
现在玩游戏!
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |