ОБНОВЛЕНИЕ : После этого ответа я бы теперь изменил свой ответ на использование зефира / зефира-sqlalchemy.
Предыдущий ответ:
Я не знаю ответа наверняка, но ...
Из издания Мигеля Гринберга Flask Web Development, 2-е издание, стр. 210-213, он применяет подход, согласно которому метод
def Post(db.Model):
# ...
def to_json(self):
json_post = {
** json using model **
}
return json_post
определен в models.py
Запустите новый узел ( b @ node
) erl -sname b -mnesia dir '"/ path / to / storage" -s mnesia
. Это запускает новый узел ram_copies с именем b @ node
.
На исходном узле ( a @ node
) в приглашении erlang выполните mnesia: change_config (extra_db_nodes, [' b @ node ']).
Это заставит исходный узел соединиться b
с кластером mnesia. В этот момент b @ node
присоединился к кластеру, но имеет только копию схемы.
Чтобы создать новый узел b @ node
способный хранить копии дисков, нам нужно изменить тип таблицы схемы на b @ node
с ram_copies
на disc_copies
. Запустите mnesia: change_table_copy_type (схема, ' b @ node ', disc_copies).
на любом узле.
На этом этапе b @ node
имеет только копию схемы. Чтобы скопировать все таблицы из a @ node
в b @ node
и сохранить типы таблиц, вы можете выполнить:
[{Tb, mnesia:add_table_copy(Tb, node(), Type)}
|| {Tb, [{'a@node', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)}
|| T <- mnesia:system_info(tables)]].
Для выполнения этой команды может потребоваться некоторое время, так как она скопирует содержимое каждой таблицы по сети.
b @ node
теперь является точной копией a @ node
. Вы можете изменить это утверждение - заменить переменную Type
на disc_only_copies
в вызове mnesia: add_table_copy / 3
, чтобы скопировать таблицы, но убедиться, что они только на диске.
В документации mnesia объясняется, как использовать функции, которые я здесь показал.