【问题标题】:Python MySQL : Refresh data when changes on databasePython MySQL:数据库更改时刷新数据
【发布时间】:2021-08-24 11:19:48
【问题描述】:

我有一个在 Docker 容器中运行的 Python API,该 API 使用来自 MySQL 数据库的数据,但始终是最新数据。目前,每次我们处理 API 上的查询时,我们都会在 db 上运行 SELECT 查询以获取最新版本的数据。问题是这在性能和资源方面绝对没有效率,因为响应越来越大。我尝试使用 Docker 卷和计划脚本设置一些东西来每天更新卷,但它是一个真正的 gaz 工厂,速度不够快。

我的问题是:有没有办法通过每次在数据库上提交新数据时运行 SELECT 查询来创建可以更新本地数据的连接?

我们的数据库查询非常简单,它只是一个 SELECT field_1, field_2 FROM table WHERE field_3 = "value"

我们正在使用 PyMySql 创建如下连接:

cnx = pymysql.connect(
        host="address",
        user="user",
        password="password",
        db="db_name",
        charset="utf8mb4",
        cursorclass=pymysql.cursors.DictCursor,
    )

提前感谢您的帮助!

【问题讨论】:

  • 不,实际上不可能,因为 mysql 没有通知功能。您需要在应用程序中实现消息队列或通知功能,而不是为此使用 mysql。
  • 数据库是否也被同一个应用程序填充?
  • @rfkortekaas 不,数据库由完全不同的应用程序填充,有时是手动填充
  • 缓存数据库响应,尝试使查询响应更小,或尝试在查询中调整数据库(您需要field3 上的索引吗?)都可以提供帮助;这与是否在 Docker 中运行无关。

标签: python mysql sqlalchemy pymysql


【解决方案1】:

如果你有这个特定的语句会运行得更快

INDEX(field_3, field_1, field_2)

如果表中有多个值,但想要“最新”,则执行以下操作:

SELECT ...
    ORDER BY dt DESC
    LIMIT 1

(如果您需要更多详细信息,请提供有关表格的详细信息)

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多