python - 检查数据库中新条目的最快和最有效的方法是什么?

标签 python mysql sql pyodbc

我目前有一个应用程序,可以在任何给定时间将新数据插入到我的数据库中。我还有一个不同的 python 脚本,它在无限循环中检查我的数据库是否有新条目,当它找到一个条目时,它会选择它并使用它,然后再次等待。

我想知道是否有任何方法可以更有效、更准确地做到这一点?

谢谢

我目前有这样的设置:

conn = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};'
                      'Server=REDACTED;'
                      'Database= REDACTED;'
                      'UID= REDACTED;'
                      'PWD= REDACTED;')

cursor = conn.cursor()

在一个循环中,例如:

i = 1
while i < 2:
     #check database for new entry with select statement and compare old list with current list and see if there is a difference. If there is a difference, use that new key and process data. 

它目前工作正常,但我觉得它白做了很多工作。例如,在一周内它每天只会真正访问数据库 30-50 次,但在周末它每天会接近 100-200 次......唯一的是,没有固定数量访问它的次数或时间。

任何帮助都是有用的。 谢谢

最佳答案

我以前从来没有这样做过。但是我想到了 3 个想法。

(1) 如果您的脚本正在写入另一个数据库,那么您的替代方案可能是设置源数据库的复制。原始数据库的 DBA 可以为您进行设置。

(2) 如果您愿意彻底改造原始数据库,您可以考虑使用实时内存数据库(例如 Redis),具体取决于您的用例是否有帮助。

(3) sqlalchemy 似乎有一个内置的事件监听器。我在 Python 中使用 sqlalchemy,但从未使用过这个特殊功能。

https://docs.sqlalchemy.org/en/13/orm/session_events.html

关于python - 检查数据库中新条目的最快和最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58443306/

相关文章:

mysql - 根据MySQL中另一个表的数据自动更新列中字段的数量

python - 如何在循环上并行运行单个函数? Python 2.7.12

php - 当您只进行一次选择时,使用准备好的 Select 语句是否更好?

python - 脚本中的线程在 IDLE 中工作,但不能通过 Ubuntu 命令行

php - 2 查询和分页

php - 在 MySQL 结果中包含重复结果

java - 无法从 Elastic Beanstalk 上的 Java 应用程序连接到 MySQL Amazon RDS,java.sql.SQLException : No suitable driver

SQL查询: Group Time into timeslices then group by loginname then count distinct loginnames per timeslice

python - Django Blog Archive--显示包含帖子的年月列表

python - 需要代码方面的帮助,所有结果都返回错误,而 2 应该为真