名称'conn'未定义:NameError

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了名称'conn'未定义:NameError相关的知识,希望对你有一定的参考价值。

我想将我的aws iot mqtt消息存储到我的postgresql中。为此,我已将本地posrtgresql连接到amazon RDS实例。现在,我需要在amazon lambda calculus之间创建一个连接,然后将数据发送到postgresql数据库。但无论何时,我正在测试我的lambda演算,它给了我“name'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的异常处理模式看起来像qazxsw poi:

this

这样您将看到真正的错误消息:

无效的dsn:无效的连接选项“passwd”

编辑#1:

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

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

以上是关于名称'conn'未定义:NameError的主要内容,如果未能解决你的问题,请参考以下文章

未定义Django Teamplate错误名称'Post_title'

path('accounts /',include(accounts.urls)),NameError:未定义名称'accounts'

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序怎么解决?

awsebcli NameError pip安装突然失败:未定义名称'platform_system'

input()返回Traceback(最近一次调用):NameError:未定义名称'___'的文件,“,第1行,

matlab boundaries和fchcode函数无法执行的解决办法 未定义与 'double' 类型的输入参数相对应的函数 'boundaries'