我有一个使用Storm ORM将数据保存在本地SQLite数据库中的模块。我正在研究另一个将数据同步到中央PostgreSQL服务器的模块。我以为我会聪明并做以下事情:
unsynced = localStore.find(MyType, MyType.synced == False)
for assign in unsynced:
self.remoteStore.add(assign)
这并不像希望的那样工作,抛出以下错误:
object at 0x18bb4d0 is part of another store
有没有办法打破与本地商店的关联,以便我可以远程保存数据?由于我需要在远程成功保存数据后翻转本地副本中的同步标记,这可能会略有复杂。
答案 0 :(得分:2)
Storm中没有任何内容可以自动执行此操作,因为并不总是很明显应该复制的内容:
当然,这些问题可能不会影响您的申请。在这种情况下,您可以编写一个复制对象的方法,以便将其添加到另一个商店:
def copy(self):
"""Create a new object with the same property values."""
other = self.__class__()
# Copy over the relevant fields. If you're using an integer primary key,
# then this probably doesn't include that key.
other.foo = self.foo
other.bar = self.bar
...
return other
然后,您可以更改代码以执行以下操作:
for assign in unsynced:
self.remoteStore.add(assign.copy())