创新互联Django4.0教程:Django4.0多数据库-多数据库的局限性

跨数据库关系

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​在同一个数据库中。

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

网页名称:创新互联Django4.0教程:Django4.0多数据库-多数据库的局限性
本文路径:http://www.shufengxianlan.com/qtweb/news21/154421.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联