Django4 中文入门教程 Django4.0 多数据库-同步数据库

2024-02-25 开发教程 Django4 中文入门教程 匿名 7

migrate ​管理命令一次只在一个数据库上进行操作。默认情况下,它在 ​default ​数据库上操作,但提供 ​--database​ 的话,它可以同步到不同数据库。因此,如果想在上面例子中的所有数据库上同步所有模型,你可以这样调用:

$ ./manage.py migrate
$ ./manage.py migrate --database=users

如果不想每个应用同步到特定数据库,可以定义 ​database router​ ,它实施限制特定模型可用性的策略。
如上述第二个例子,如果 ​default ​数据库为空,每次执行 ​migrate ​的时候,必须提供数据库名,否则会报错。

$ ./manage.py migrate --database=users
$ ./manage.py migrate --database=customers

使用其他管理命令

大部分 ​django-admin​ 命令像 ​migrate ​一样操作数据库——它们一次只操作一个数据库,使用 ​--database​ 来控制所要使用的数据库。
这个规则的一个例外是 ​makemigrations ​命令。它验证数据库中的迁移历史,以便在创建新迁移之前发现现有迁移文件的问题(这可能是修改它们所产生)。默认情况下,它只检查 ​default ​数据库,但建议在任何模型安装时,执行 ​allow_migrate() method of routers​ 。