Какой самый быстрый и эффективный способ проверить базу данных на наличие новых записей? - PullRequest
1 голос
/ 18 октября 2019

В настоящее время у меня есть приложение, которое в любой момент вставит новые данные в мою базу данных. У меня также есть другой скрипт на 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 раз в день ... единственное, нет установленного числараз он получит к нему доступ или когда.

Любая помощь будет полезна. Спасибо

1 Ответ

0 голосов
/ 18 октября 2019

Мне никогда не приходилось делать это раньше. Но на ум пришло 3 идеи.

(1) если ваш сценарий пишет в другую базу данных, то альтернативой может быть настройка репликации исходной базы данных. Администратор базы данных оригинальной базы данных может настроить это для вас.

(2) если вы хотите пересмотреть исходную базу данных, вы можете рассмотреть базу данных в оперативной памяти в реальном времени (например, redis), в зависимости от вашего варианта использования, который может помочь.

(3) кажется, что sqlalchemy имеет встроенный прослушиватель событий. Я использую sqlalchemy в Python, но никогда не использую эту особенность.

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

...