我正在开发一个 Django 应用程序,它将使用多个数据库后端。我想在运行 django 应用程序的机器上放置一个 sqlite 数据库,并同步到远程 mysql 数据库。棘手的部分是,运行应用程序的机器并不总是有互联网连接,因此 mysql 数据库并不总是可用。将有多台机器运行该应用程序,每台机器都有自己的本地 sqlite DB,但都使用相同的远程 mysql DB。
我还没有编写代码,但这就是我的想法。每次运行插入或更新时,我都想将其写入两个数据库,除非远程数据库不可用,在这种情况下,我会将 sql 语句保存在本地数据库的表中,以便在远程数据库可用时运行。
这可以通过数据库路由器来完成吗?还是我需要用每个数据库语句手动实现这一点?
关于PK的注意事项:没有直接关系,但肯定会被问到。主键将在每台机器上本地生成。在 mysql DB 中,将有一个用于此键的字段,以及一个为应用程序的每个实例提供唯一标识符的字段,它们一起将提供唯一的键。
假设您有一个名为 Blog 的模型,那么您可以使用以下命令将其存储在本地和远程(假设您已配置对远程数据库的访问)。
blog = Blog('test')
blog.save() #Assuming that sqlite is the default db
try:
blog.save(using='mysql')
except NoInternetConnection:
pass
确保您已在 settings.py 中定义并配置了“mysql”,并且在没有 Internet 连接时处理情况。
旁注:我不太确定为什么你真的想这样做。如果这是出于备份目的,那么我将使用标准备份程序。有关使用多个数据库的更多信息,请参阅:http://docs.djangoproject.com/en/dev/topics/db/multi-db/#using-raw-cursors-with-multiple-databases http://docs.djangoproject.com/en/dev/topics/db/multi-db/#using-raw-cursors-with-multiple-databases
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)