首页 > 解决方案 > 用python编写的aws lambda to mysql不会返回最新数据,直到我更改某些内容并再次保存代码

问题描述

我使用以下内容将我的 aws lambda 连接到 db:

https://www.isc.upenn.edu/accessing-mysql-databases-aws-python-lambda-function

这是完成这项工作的代码:

def lambda_handler(event, context):
"""
This function inserts content into mysql RDS instance
"""
item_count = 0

with conn.cursor() as cur:
    cur.execute("create table Employee3 (EmpID  int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (EmpID))")
    cur.execute('insert into Employee3 (EmpID, Name) values(1, "Joe")')
    cur.execute('insert into Employee3 (EmpID, Name) values(2, "Bob")')
    cur.execute('insert into Employee3 (EmpID, Name) values(3, "Mary")')
    conn.commit()
    cur.execute("select * from Employee3")
    for row in cur:
        item_count += 1
        logger.info(row)
return "Added %d items to RDS MySQL table" %(item_count)

问题是当我尝试 lambda 时,我得到的结果很好,但是如果我更改 db 中的数据,然后在 lambda 容器仍在运行时再次发送请求,我看不到更新的数据,我看到了旧数据。但是当我在更改后保存 lambda 只是为了杀死当前容器时,它开始加载最新信息。我怎样才能解决这个问题?

标签: python-3.xamazon-web-servicesaws-lambda

解决方案


首先,仔细检查您的响应没有被缓存在其他任何地方(API Gateway、CloudFront 或您用来调用此 lambda 的任何其他东西)。

AWS Lambda 中处理程序之外的所有变量都被视为全局变量(至少对于该 lambda 容器的单个实例)。

问题在于您在处理程序之外实例化的东西。问题必须在于连接(您的 conn 变量)。将此代码移动到处理程序函数内。


推荐阅读