【问题标题】:Lambda function python script using psycopg2使用 psycopg2 的 Lambda 函数 python 脚本
【发布时间】:2021-10-19 15:12:12
【问题描述】:

Full screenshot

Runtime settings

我将使用 Lambda 函数(python 脚本)连接 RDS postgresql 数据库 我附上截图。 错误记录在这里。 Unable to import module 'postgres_test': No module named 'psycopg2'

python版本是3.6

这个问题是由于没有安装 psycopg2 包引起的。 然后我不知道如何在 lambda 上安装包 请指导我。

postgres_test.py:

`

import sys
import logging
import psycopg2

from db_util import make_conn, fetch_data
def lambda_handler(event, context):
query_cmd = "select count(*) from tablename"
# print query_cmd

# get a connection, if a connect cannot be made an exception will be raised here
conn = make_conn()

result = fetch_data(conn, query_cmd)
conn.close()

return result

db_util.py:

`​

   ​import psycopg2

   ​db_host = "db_host" 
   ​db_port = 5432
   ​db_name = "db_name "
   ​db_user = "db_user "
   ​db_pass = "db_pass "
   ​db_table = "users"


   ​def make_conn():
       ​conn = None
       ​try:
           ​conn = psycopg2.connect("dbname='%s' user='%s' host='%s' 
   ​password='%s'" % (db_name, db_user, db_host, db_pass))
       ​except:
           ​print "I am unable to connect to the database"
       ​return conn


   ​def fetch_data(conn, query):
       ​result = []
       ​print "Now executing: %s" % (query)
       ​cursor = conn.cursor()
       ​cursor.execute(query)

       ​raw = cursor.fetchall()
       ​for line in raw:
           ​result.append(line)

       ​return result

【问题讨论】:

  • 请在您的问题正文中以文本形式包含相关代码,以便搜索、复制和粘贴以帮助我们帮助您!
  • 你确定 psycopg2 已经安装了吗?
  • 不,它没有安装在 lambda 上。我不知道如何在 lambda 上安装 psycopg2。 @kubatucka

标签: python python-3.x postgresql lambda aws-lambda


【解决方案1】:

要在 lambda 中使用不同的库,您必须在当前项目中安装该库并将其作为 zip 文件上传到 lambda。

特定于 psycopg2 使用这个 repo https://github.com/jkehler/awslambda-psycopg2

要安装其他库,请使用以下命令
例如requests

pip install requests -t .

您的项目将如下所示

.
├── lambda_function.py
├── psycopg2
├── <library2>

要使用 zip 文件方法将项目上传到 lambda,您可以使用以下链接

https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html https://alexharv074.github.io/2018/08/18/creating-a-zip-file-for-an-aws-lambda-python-function.html

【讨论】:

  • nope in lambda venv 文件夹在当前项目根目录中没有真正意义,只需安装所有库
  • 我已经编辑了我的答案
  • 我在特定于 psycopg2 存储库的答案中添加了一个 git 存储库。你能检查它的自述文件并在你的仓库中克隆特定的文件夹吗?github.com/jkehler/awslambda-psycopg2
  • 如果使用 python-3.6 则只需从 repo 复制 psycopg2-3.6 并将其重命名为 psycopg2
  • 谢谢。正如你提到的,一旦解决了这个问题。我从这里连续发布了新问题。 stackoverflow.com/questions/69638493/…可以回复吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
  • 2017-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多