【问题标题】:What is the fastest and most efficient way to check database for new entry?检查数据库是否有新条目最快和最有效的方法是什么?
【发布时间】:2019-10-18 02:54:23
【问题描述】:

我目前有一个应用程序,可以在任何给定时间将新数据插入到我的数据库中。我还有一个不同的 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 次......唯一的问题是,没有固定的次数它会访问它的次数,或何时访问它。

任何帮助都会很有用。 谢谢

【问题讨论】:

标签: python mysql sql pyodbc


【解决方案1】:

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

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

(2) 如果您愿意对原始数据库进行大修,您可以考虑使用实时内存数据库(例如 redis),具体取决于您的用例可能会有所帮助。

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

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

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2011-11-15
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多