python - 检查数据库是否有新条目最快和最有效的方法是什么?
问题描述
我目前有一个应用程序,可以在任何给定时间将新数据插入到我的数据库中。我还有一个不同的 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,但从未使用过这个特殊功能。
推荐阅读
- c - 如何将二进制数转换为有符号十进制数
- python - 通过加载和保存权重继续训练 Keras 模型
- ios - 如何在 iOS 的 TableView 中使用 AdMob 横幅广告?
- python-3.x - Pandas:如何仅遍历两个 ID 列的回溯日期以提供唯一 ID 和计数?
- javascript - 有没有办法在点击时按顺序弹出链接?
- matlab - 从第二行读取 csv 并创建输出
- android - java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 - 为什么?
- c# - 编码、解码和重新编码不产生原始结果
- r - 返回 top_n 后的原始数据集
- google-app-engine - 如何从谷歌应用引擎标准下载源代码(appcfg.py 已弃用)