我有一个主Django服务器,其中数据存储在MySQL数据库中。
在线模式:我希望许多用户能够在他们的笔记本电脑上拥有与此数据库同步的副本(只需复制增量)(SQLLite DB)
离线模式(用户无法访问主服务器):用户可以查看和更新其本地数据库。
回到在线模式:在用户的笔记本电脑上修改的内容将同步回主Django服务器。
我认为,由于我有两种不同的数据库,因此我需要在Django对象级别进行同步。是否有Django应用程序可以执行此操作?如果没有,您将如何编写此功能?
我有一个主Django服务器,其中数据存储在MySQL数据库中。
在线模式:我希望许多用户能够在他们的笔记本电脑上拥有与此数据库同步的副本(只需复制增量)(SQLLite DB)
离线模式(用户无法访问主服务器):用户可以查看和更新其本地数据库。
回到在线模式:在用户的笔记本电脑上修改的内容将同步回主Django服务器。
我认为,由于我有两种不同的数据库,因此我需要在Django对象级别进行同步。是否有Django应用程序可以执行此操作?如果没有,您将如何编写此功能?
嗯,我其实不知道是否有一个django应用程序可以做到这一点,但我会按照以下步骤进行:
创建一个“offline_update”方法:连接到服务器的数据库,选择所有id与本地数据库匹配的对象。更新本地数据库。然后选择其余的条目,并将它们添加到本地数据库中。
创建一个“online_update”方法:相同的例程,反过来执行。
优点:易于实现(Objects.all()可以获取所有内容,然后您可以直接操作和更新或保存)
缺点:竞争条件(如果两个用户同时更新同一条目怎么办?谁拥有最新的版本?)
您基本上创建了一种“mysql-svn”来保持两个数据库的更新。
我投票+1支持您的问题,因为它非常有趣。我一直通过转储数据库(通过mysql)然后加载到本地数据库中来工作,而没有使用django。