Миграция с SQLObject на SQLAlchemy :: Может ли SQLAlchemy поддерживать нулевое кэширование и автозагрузку обновлений таблиц? - PullRequest
1 голос
/ 31 января 2012

Я хочу знать, может ли SQLAlchemy поддерживать мгновенную загрузку текущего состояния объекта из базы данных, когда другой процесс обновляет некоторые атрибуты того же объекта.

Хочу отметить, что я перехожу с SQLObject на SQLAlchemy. Используя SQLObject, в настоящее время у меня есть одна таблица, как:

class MyConfiguration(SQLObject):
    class sqlmeta:
        cacheValues = False
    attr1 = StringCol(default='')
    attr2 = IntCol(default=0)

Как вы знаете, этот параметр cacheValues ​​= False мгновенно сбрасывает обновления атрибутов на диск:

global my_config
my_config = MyConfiguration()
my_config.attr1 = 'some value'

Мгновенное значение attr1 установлено на «некоторое значение», это значение доступно другому процессу, использующему тот же объект my_config.

Я прошел основные уроки по ORM и Core в SQLAlchemy, и, насколько я понимаю, самое близкое, что я могу сделать для достижения этой цели, - это использовать session.merge (), потому что, если я не добавлю или не объединю, состояние «my_config» в SQLAlchemy не станет ожидающим / грязным, и при autoflush = True последующий запрос перечитает строку из таблицы.

Еще одна опция, о которой я думал, - я могу переопределить setattr в MyConfiguration, чтобы мгновенно сбросить изменения в экземпляр. Однако мне это не нравится, потому что это ужасно, и я хочу использовать как можно больше возможностей SQLAlchemy, чем что-то взламывать.

Итак, я пытаюсь найти точное соответствие функции этого объекта SQLOlchemy. Это возможно?

Заранее спасибо за помощь.

...