2012-11-11 3 views
0

매분마다 데이터베이스 (MySQL)의 프로그램 쿼리 데이터가 있습니다.데이터 동기화, 변경된 내용 추적

while 1: 
    self.alerteng.updateAndAnalyze() 
    time.sleep(60) 

그러나 데이터는 자주 변경되지 않습니다. 어쩌면 한 시간에 한 번 또는 하루. (다른 C++ 프로그램으로 변경)

변경 사항이 발생하면 내 데이터를 쿼리하고 업데이트하는 것이 가장 좋은 방법이라고 생각합니다.

어떤 조언이 필요합니까?

답변

2

당신이하고있는 일에 따라 다르지만 SQLAlchemy의 Events 기능이 도움이 될 것입니다.

데이터베이스에 문제가 발생할 때마다 (즉, 새 행을 삽입하거나 열 값을 설정 한 경우) 코드를 실행할 수 있습니다. Flask 앱에서 알림이나 기타 비동기 프로세스를 시작하는 데 사용했습니다.

http://docs.sqlalchemy.org/en/rel_0_7/orm/events.html#mapper-events

여기에 새로운 YourModel 모델이 데이터베이스에서 생성 될 때마다 kick_off_analysis() 함수를 실행하는거야 플라스크 앱에서 장난감 코드입니다.

from sqlalchemy import event 

@event.listens_for(YourModel, "after_insert") 
def kick_off_analysis(mapper, connection, your_model): 
    # do stuff here 

희망 하시겠습니까?

0

나는 updateAndAnalyze()이 얼마나 비싸지는 모르겠지만 대부분의 SQL 명령과 같다고 확신한다. 정말로 투표하고 싶지는 않다.

Observer Pattern에 대한 교과서 사례가 있습니다. MySQL이 업데이트 될 때마다 코드에서 어떻게 든 호출하도록합니다. 나는 정확한 메카니즘에 긍정적이지는 않지만, 기본 테이블이 갱신되었음을 코드에 알릴 수있는 관련 테이블에 트리거를 설정하는 방법이 있어야합니다. 그런 다음, 폴링 대신에, 당신은 기본적으로 당신이 뭔가를해야한다는 지식으로 "방해 받는다". 그것은 또한 당신이하고있는 것이 무엇이든 더 기분이 좋을 것입니다, 당신이 소개하고있는 최신의 지연을 제거 할 것입니다.