python - MySQL 数据使用谷歌云 SQL 和 SQLAlchemy 进行缓存
问题描述
这是我关于stackoverflow的第一个问题,所以如果我做错了什么,请纠正我:)。
我在 Google Cloud SQL 上托管的数据库中的数据正在使用 Flask-SQLAlchemy 进行缓存。当我添加新记录并尝试获取该记录时,它不存在。
我正在使用一个添加记录的脚本,我使用一个来获取记录。
我首先用 SQLite 进行了尝试,效果很好。但在 Google Cloud SQL 中使用 MySQL 时却没有。
每次我向我使用的数据库添加/更改某些内容时db.session.commit()
我使用 pymysql 模块:pymysql.install_as_MySQLdb()
我的连接 URI 如下所示:mysql://...
编辑:这是我用来添加新记录的(我的脚本是用来添加笑话的):
new_joke = Jokes(joke, user["username"], user["id"], avatar_url, "0")
db.session.add(new_joke)
db.session.commit()
这就是我用来获取记录的(随机):
jokes = Jokes.query.all()
randint = random.randint(0, len(jokes) - 1)
joke = jokes[randint]
解决方案
我找到了答案!
通过在进行db.session.commit()
查询之前执行,它会刷新它的缓存。
我的代码现在看起来像这样:
db.session.commit()
jokes = Jokes.query.all()
randint = random.randint(0, len(jokes) - 1)
joke = jokes[randint]
推荐阅读
- python - 从训练数据集 PyTorch 读取数据时出现运行时错误
- security - 安全网站是否可能仅在一台特定机器上显示为不安全?
- c# - 发件人对象 - с#
- docker - Kubeflow 是否可以将本地文件夹挂载到多个容器操作?
- ios - 在 ios 中为特定条件隐藏故事板中设置的图像
- javascript - 使用 JS /g 函数替换字符显示未定义
- java - 什么是查找仅包含数字的计数的方法
- php - Opencart v1.5.6.4 - PHP 致命错误:'函数名必须是字符串'
- ios - Swift 布尔值不起作用:无法将“Bool”类型的值分配给“BOOL”类型(又名“Int32”)
- c# - 通过 c# 中的 api 从共享点获取文件/文件夹