举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > django 多数据库 Django4.0 多数据库-多数据库的局限性

django 多数据库 Django4.0 多数据库-多数据库的局限性

2023-03-28 17:18 Django4中文教程

django 多数据库 Django4.0 多数据库-多数据库的局限性

django 多数据库 Django4.0 多数据库-多数据库的局限性

django 多数据库

跨数据库关系

Django 当前不提供对跨多数据库的外键或多对多关系任何支持。如果已经使用路由来分隔模型到不同数据库,那么通过这些模型来定义的任何外键和多对多关系必须在单一数据库内。

这是因为参照完整性。为了维护两个对象之间的关系,Djagno 需要知道这个相关对象的外键是否是合法的。如果外键被保存在单独的数据库上,则无法轻松评价外键的合法性。

如果你正在使用 Postgres,Oracle,或支持 InnoDB 的 MySQL,这是在数据库完整性级别上强制执行的——数据库级别的键约束防止创建无法验证的关系。

然而,如果你正在使用 SQLite 或支持 MyISAM 表的MySQL,这就不会强制参照完整性;因此,你可以伪造跨数据库的外键。尽管 Django 并没有正式支持这个设置。

contrib应用程序的行为

一些贡献应用包括模型,一些应用依赖于其他应用。 由于跨数据库关系是不可能的,因此这会对如何跨数据库拆分这些模型产生一些限制:

  • 在给定合适的路由器的情况下,​contenttypes.ContentType​,​sessions.Session​和​sites.Site​中的每一个都可以存储在任何数据库中。
  • auth​模型 - ​User​,​Group​和​Permission ​- 链接在一起并链接到​ContentType​,因此它们必须与​ContentType​存储在同一个数据库中。
  • admin​依赖于​auth​,所以它的模型必须和​auth​在同一个数据库中。
  • flatpages​和​redirects​依赖于​sites​,所以他们的模型必须和​sites​在同一个数据库中。

注意:如果要将内容类型同步到多个数据库,请注意它们的主键可能在数据库之间不匹配。这可能导致数据损坏或数据丢失。


阅读全文
以上是编程学为你收集整理的django 多数据库 Django4.0 多数据库-多数据库的局限性全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部