gpt4 book ai didi

python-3.x - 名称 'conn' 未定义 : NameError

转载 作者:行者123 更新时间:2023-11-29 14:32:41 25 4
gpt4 key购买 nike

我想将我的 aws iot mqtt 消息存储到我的 postgresql 中。为此,我已经将我的本地 posrtgresql 连接到亚马逊 RDS 实例。现在,我需要在 amazon lambda 演算之间创建一个连接,然后将数据发送到 postgresql 数据库。但是每当我测试我的 lambda 演算时,它都会给我“名称‘conn’未定义:NameError”错误。这是我在 aws lambda 中的 python 代码。我还将 psycopg2 库包含到我的项目中。

import sys
import logging
import rds_config
import psycopg2
#rds settings
rds_host = "myhost"
name = "username"
password = "username_password"
db_name = "dbname"

logger = logging.getLogger()
logger.setLevel(logging.INFO)

try:
conn = psycopg2.connect(host=rds_host, user=name, password=password,
dbname=db_name, connect_timeout=5)
except:
logger.error("ERROR: Unexpected error: Could not connect to postgreSQL
instance.")

logger.info("SUCCESS: Connection to RDS postgreSQL instance succeeded")
def handler(event, context):
"""
This function fetches content from postgreSQL RDS instance
"""
item_count = 0
with conn.cursor() as cur:
cur.execute('insert into awsiotdata (serialnumber, dateandtime, clicktype, batteryvoltage) values(serialNumber, datetime.datetime.utcnow(), clickType, batteryVoltage)')
conn.commit()
cur.execute("select * from awsiotdata")
for row in cur:
item_count += 1
logger.info(row)
#print(row)


return "Added %d items from RDS PostgreSQL table" %(item_count)

最佳答案

您隐藏了真实的错误消息。 Python 的异常处理模式看起来像 this :

try:
conn = psycopg2.connect(host=rds_host,
user=name,
password=password,
database=db_name)
except Exception as e:
print(e)

这样你会看到真正的错误信息:

invalid dsn: invalid connection option "passwd"

编辑#1:

“超时”表示由于 RDS 实例的“安全组规则”,lambda 无法连接。请记住,即使是公共(public) RDS 实例默认也有 IP 入站限制(即可以从 PC 连接但不可能从 AWS Lambda 连接)。

RDS wizard RDS instance options

关于python-3.x - 名称 'conn' 未定义 : NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com