gpt4 book ai didi

python - 为什么对 MySQL RDS 的 AWS Lambda python 调用会被缓存?

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

简化我的程序,我有一个 MySQL RDS 数据库,我想开发一个 Lambda 函数来获取插入特定列中的最后一个值。

我在 lambda 函数中得到了以下代码,基于 this AWS tutorial :

# Connexion to DB outside the handler, per AWS recomendation 
def lambda_handler(event, context):
with conn.cursor() as cur:
cur.execute("SELECT column FROM DB.table ORDER BY create_time DESC LIMIT 1;")
row = cur.fetchone()
return row[0]

我正在使用pymysql

基本上,在第一次调用中(例如,保存 lambda 函数后),它会按预期工作,并返回表中的最后一个值。

但是,对于短时间内(几分钟)内的任何其他调用,它会继续返回相同的值,而与任何数据库更改无关。

保存或等待几分钟会得到正确的结果。我是否可能无意中缓存了结果?

最佳答案

解决方案是在每次 Select 查询后使用一次 conn.autocommit(True) 或使用 conn.commit()

使用此选项,每个选择查询后都会有一次提交。否则,后续选择将呈现相同的结果。

这个错误似乎是Bug #42197与MySQL中的查询缓存和自动提交相关。状态无法修复!还有一个issue in pymysql但它已经关闭了。

几个月后,这应该无关紧要,因为 MySQL 8.0 is dropping Query Cache .

关于python - 为什么对 MySQL RDS 的 AWS Lambda python 调用会被缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359668/

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