В данный момент я запрашиваю моя база данных так:Возможно ли генераторное запрос базы данных по sqlalchemy?
for author in session.query(Author).filter(Author.queried==0).slice(0, 1000):
print "Processing:", author
# do stuff and commit later on
Это означает, что каждые 1000 авторов, которые я должен перезапустить скрипт.
Можно ли запустить сценарий бесконечно (или пока есть авторы)? Я имею в виду, что, если это возможно, чтобы превратить
session.query(Author).filter(Author.queried==0).slice(0, 1000)
в какой-то генератор, который дает следующий автор, для которого queried==0
верно.
Если я не совершаю, все будет потеряно, если мой скрипт выйдет из строя ... Поэтому было бы лучше обернуть фактический скрипт циклом while, который будет продолжать итерацию, если есть авторы с 'queried == 0 «правда, правильно? – Aufwind
Естественное место для совершения происходит только после того, как ваша петля завершена. Но если у вас много изменений, это может быть большая транзакция и не работает хорошо. Если это так, срез в исходной постановке проблемы может быть лучше. Это зависит от того, что вы делаете и сколько строк, вероятно, будет возвращено. – wberry
В качестве обновления postgres поддерживает функцию прослушивания/уведомления api – morissette