Как отслеживать изменения таблицы MySQL в Django? - PullRequest
0 голосов
/ 22 марта 2011

Для отслеживания изменений таблицы mysql в django я написал несколько кодов следующим образом:

while not find_close_signal():
    time.sleep(10)
    if MyProject.models.MyModel.objects.all().exists():
        some_execution()

Однако это не работает. Если в начале таблицы нет записей, тогда some_execution () никогда не запустится, даже если есть записи, заполненные в этой таблице другими внешними способами.

Кто-нибудь когда-нибудь сталкивался с такой проблемой?

Я также обнаружил в "manage.py shell", эта проблема происходит точно так же: любые другие записи, добавленные в db из этой оболочки, не могут быть найдены в этой оболочке. Это правда или я допустил какую-то ошибку? Спасибо

Ответы [ 3 ]

1 голос
/ 22 марта 2011

не уверен, что это проблема, но может случиться так, что этот код выполняется внутри транзакции, поэтому в таком случае вы не увидите никаких изменений.

еще одна вещь заключается в том, что выможете пропустить ".all ()" в этой проверке.

0 голосов
/ 22 марта 2011

Вы можете пометить БД как ' dirty ', чтобы Django отбрасывал кэшированные результаты:

from django.db import transaction
transaction.set_dirty()
...