首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >另一个数据库中的Django外键

另一个数据库中的Django外键
EN

Stack Overflow用户
提问于 2016-06-15 12:23:00
回答 2查看 6K关注 0票数 2

我有两个不同的Django应用程序和两个不同的数据库。在APP1中,我需要一个表中的所有记录,该表位于APP2 DB中。除此之外,我的一个APP1模型有一个指向APP2模型的ForeignKey,而根据docs,这是不可能的。

由于Django不支持跨越多个数据库的外键关系,所以我不知道该做什么。

官方文件:

如果您曾经使用路由器将模型划分到不同的数据库,那么由这些模型定义的任何外键和多到多的关系都必须是单个数据库的内部关系。 这是因为引用的完整性。为了维护两个对象之间的关系,Django需要知道相关对象的主键是有效的。如果主键存储在单独的数据库中,则不可能轻松地评估主键的有效性。

作为一个解决方案,我已经考虑了合并这两个数据库,所以这两个应用程序将使用一个相同的数据库。但是那样的话,我会把模型搞得一团糟,因为APP1只需要一个来自APP2的表,而且它不需要剩下的模型和DB表。而且,我非常肯定,在将这两个应用程序迁移到同一个数据库时,它会产生问题(冲突)。

我正在使用Django DB路由器,这是我迄今为止尝试过的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Car(models.Model):
    _DATABASE = "cars"
    color = models.TextField(max_length=1000)
    ...

class Employee(models.Model):
    id = models.IntegerField()
    car = models.ForeignKey(Car)
    ...

它给了我:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
django.db.utils.OperationalError: (1054, "Unknow column 'car' in 'employees'")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-15 17:17:01

一张还是两张?

第一个问题是问你自己,真的有必要有两个不同的数据库吗?在PHP世界中,使用同一个数据库的不止一个应用程序很常见,因为大多数人都在共享托管,而托管计划只允许一个数据库。

对于一个网站来说,有足够的流量将内容分成两个数据库是非常罕见的。通常情况下,路由器的过头使得它不值得花时间。切分几乎总是更好地处理专门的软件。

是的,必须是两个!

这不是不可能的,只是很难做到。

要做的第一件事是更改Car模型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Car(models.Model):
    color = models.TextField(max_length=1000)
    class Meta:
        managed = False

请注意,它不再引用第二个数据库,它是非托管的。但是你的数据库里没有这样的表。所以你需要创建视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 CREATE OR REPLACE VIEW myapp_cars AS SELECT * FROM cars.otherapp_cars

请确保使用准确的数据库和表名来匹配现有的数据库和表名。我们只走了一半。您需要创建一个触发器以插入到其他数据库中。这一点以前在这里已经讨论过很多次了,所以我不想详细说明。示例

  1. MySQL触发器将数据插入到不同的DB中
  2. 如何创建触发器将数据插入到另一台服务器上的数据库中

如果您希望这些步骤是可重复的,则需要手动添加迁移。

票数 2
EN

Stack Overflow用户

发布于 2016-06-15 12:39:51

我认为这个问题与django无关。通过设计,DBMS不允许数据库之间的FK。也许你可以在互联网上找到一些解决办法,但很可能他们不遵守最佳实践。

查看交叉数据库关系部分:https://docs.djangoproject.com/en/3.2/topics/db/multi-db/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37845083

复制
相关文章
关于随机数生成的速度测试
随机数生成有两种方法,一种是主机上生成拷贝到设备上,另一种是直接主机上调用,在设备上生成:下面就是关于这两种方法的速度测试: int main(){ clock_t start,finish; int *d_data; int m = 1000; CUDA_CALL(cudaMalloc((void **)&d_data, m*sizeof(int))); int rand1[1000]; start = clock(); memset(ra
用户1154259
2018/01/17
1K0
接口测试的时候如何生成随机数据进行测试
在进行接口测试的时候会需要生成一些随机数据进行测试,今天教大家使用apipost自带的mock字段变量生成随机数据进行测试。
zyf20010801
2022/06/08
1.1K0
软件测试中质量优于数量
在软件行业中,作为质量保证的一部分,始终希望确保产品/项目以最高的质量达到预期。但是,真正具有讽刺意味的是,我们所有的质量指标都归结为数量和术语,例如记录的错误,编写的测试用例,执行的测试用例,测试所花费的时间,测试的BUG率,漏测率等等。
FunTester
2020/02/17
1K0
iphone拍照的历史顽固问题-鬼影
近期苹果 iPhone 11 系列的手机又出现了新问题,其中有不少网友表示,自己在用手机拍照后,图片中莫名出现了“鬼影”的现象,这次的“鬼影门”是指手机对着灯光拍照时,手机屏幕内会出现倒影和炫光。
AomanHao
2022/01/14
1.1K0
iphone拍照的历史顽固问题-鬼影
dotnet 世界猜测 随机数的小测试
这是一个半技术向的博客,主题来源于我读过的某本书的片段,这是一个稍稍有些前置知识的故事,主题的大概内容就是假定世界存在某个规则序列,通过一代代的探索,可以获取到此序列的内容。本文将模拟此情形,写一个随机数的小测试应用,来不严谨的证明,或者准确来说是用代码讲述这个故事
林德熙
2023/04/07
3790
第8期 | jsmn,一个资源占用极少的json解析器
本专栏由Mculover666创建,主要内容为寻找嵌入式领域内的优质开源项目,一是帮助开发者使用开源项目实现更多的功能,二是通过这些开源项目,学习大佬的代码及背后的实现思想,提升自己的代码水平,和其它专栏相比,本专栏的优势在于:
Mculover666
2020/07/16
1.9K0
第8期 | jsmn,一个资源占用极少的json解析器
如何彻底删除Windows顽固的计划任务
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\
Windows技术交流
2021/11/08
3.8K0
性能测试中的随机数性能问题探索
其实第二个场景包含在第一个场景内。对于接口测试来说,通常我们直接使用第二种场景比较多,就是从某一个集合中随机取一个值。如果更复杂一些,每个值拥有不同的权重,其中这个也可以转化成第二个场景来说。
FunTester
2022/12/09
7160
盗取QQ密码的顽固的IEXPLORE.EXE病毒
开机以后不久,在进程里面会出现多个IEXPLORE.EXE进程,用户名都是SYSTEM,杀掉进程之后,过一段时间就会重新启动这个进程。而且IEXPLORE.EXE进程的cpu占用率常常达到100%!计算机根本就无法使用。在进行拨号连网后,系统可能出现重起.甚是恼人!
全栈程序员站长
2022/09/09
8000
【SpringBoot】 设置随机数据 用于测试用例
.29.
2023/10/17
2150
【SpringBoot】 设置随机数据 用于测试用例
【干货】用极少量样本有效的训练分类器-对抗自编码器PyTorch手把手实战系列
即使是非计算机行业, 大家也知道很多有名的神经网络结构, 比如CNN在处理图像上非常厉害, RNN能够建模序列数据. 然而CNN, RNN之类的神经网络结构本身, 并不能用于执行比如图像的内容和风格分
WZEARW
2018/06/05
2.4K1
mysql生成百万级数量测试数据
    今天因为项目需要,想测试一下读取百万级数量数据的速度如何,无奈数据库没有现成符合要求的数据,网上百度一番有很都不错的文章,但是需要涉及到一些存储过程和用php代码什么的,虽说可以实现,但是感觉另外再弄这些比较麻烦,没有通用性,于是在几篇文章的参考下,.自己写了一段代码,直接生成的数据还是比较方便的,并且不是重复的数据.网上很多都是重复的,我只是做了一点小的修改,测试数据库是mysql 5.5,存储形式是MyISAM,每次生成的数据量是之前的一倍.测试的量有限,如有什么疑问欢迎评论指正.      
@坤的
2018/06/04
3.1K1
JS基础测试: 单选 下列随机数公式中正确的是
Math.random() 函数返回一个浮点, 伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后可以缩放到所需的范围。
舒克
2019/08/19
1.7K0
性能测试:吞吐量和并发请求数量的关系
吞吐量和并发请求数量的关系可以通过下面的类比来理解:假设你有一家餐厅,"并发请求数量"就像是餐厅里的客人数量,而"吞吐量"就像是餐厅在一小时内能够服务的客人数量。即使你的餐厅可以同时容纳100个客人,但如果你的厨师只能每小时做出50份餐点,那么你的"吞吐量"就是50,而不是100。
运维开发王义杰
2023/08/16
9790
redis 数量控制器,红包实例
命令: set 设置值 exists 判断key是否存在 get 获取值 incr 增加/减少值 incrby 增加/减少指定数值 setnx 不存在才能设置key 抽奖实现
DencyCheng
2019/01/07
6110
python产生随机数的方法_产生随机数的函数
Python产生随机数: 一.Python自带的random库 1.参生n–m范围内的一个随机数: random.randint(n,m)
全栈程序员站长
2022/11/09
1.7K0
随机数:真随机数和伪随机数一样吗_rdrand真随机数
说到随机这个词,相信各位肯定都深有体会了。生活中有太多的不确定因素从各方各面影响着我们,但也正是因为这样我们的人生更加多彩,具有了更多的可能性。
全栈程序员站长
2022/11/03
5.1K0
求煤球的数量
有一堆煤球,推成三角锥。第一层放1个,第二层放3个(排列成三角形),第三层放6个(排列成三角形),第四层放10个(排列成三角形),如果放100层,需要多少个煤球。
算法与编程之美
2022/05/23
4810
PG数量的预估
预设Ceph集群中的PG数至关重要,公式如下: (**结果必须舍入到最接近2的N次幂的值)**
Lucien168
2020/07/20
1.1K0
用量子计算模拟器ProjectQ生成随机数,并用pytest进行单元测试与覆盖率测试,以及基于flake8的编码规范测试
本文中主要包含有三个领域的知识点:随机数的应用、量子计算模拟产生随机数与基于pytest框架的单元测试与覆盖率测试,这里先简单分别介绍一下背景知识。
DechinPhy
2021/05/21
2.6K0

相似问题

如何在安装组件之前等待App.js代码运行?

11

如何从函数组件获取值到类组件(App.js)?

13

将函数参数从App.js传递到React中的其他组件

112

从另一个组件调用App.js中的函数

10

反应:如何在App.js中从Stack.Screen组件中设置变量?

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文