python-3.x - 用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 只是为了杀死当前容器时,它开始加载最新信息。我怎样才能解决这个问题?
解决方案
首先,仔细检查您的响应没有被缓存在其他任何地方(API Gateway、CloudFront 或您用来调用此 lambda 的任何其他东西)。
AWS Lambda 中处理程序之外的所有变量都被视为全局变量(至少对于该 lambda 容器的单个实例)。
问题在于您在处理程序之外实例化的东西。问题必须在于连接(您的 conn 变量)。将此代码移动到处理程序函数内。
推荐阅读
- java - Drools worker 线程花费太多时间,抛出 sun.nio.fs.UnixException
- reactjs - 从组件路由到主组件
- python - PIL:将图像粘贴到透明图像上而不破坏背景像素
- python - 在 Python 中,创建用字符替换列表中最多 N 个位置的所有可能组合的最快方法
- python-3.x - Sqlite3,OperationalError:无法在 Mac OS、外部硬盘驱动器上打开数据库文件
- python - 使用 BeautifulSoup 查找使用 Angular 编码器编码的文本
- php - 如何获取 drupal 字段和自定义主题
- xaml - Xamarin.Forms。如何在后面的代码中调用从项目源创建的 xaml 元素的方法?
- java - Java - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“”未标记为可忽略
- typo3 - 如何为自定义内容元素定义自定义缓存生命周期?