1

在 MySQL 中,我们可以在不同数据库中的表之间建立外键关系。我发现很难在各自的 Django 模型上翻译这种关系。

我在文档中读到不支持跨数据库关系,但是我们可以覆盖一些属性/函数,以便我们可以将表标识为DB.table而不是table

例如,在某些in 中引用了table table1in 。Django 尝试(未成功)在 中查找,并引发了DB1table2DB2table1DB2DatabaseError

Variable    Value
charset     'latin1'
exc         <class '_mysql_exceptions.ProgrammingError'>
self        <MySQLdb.cursors.Cursor object at 0x2a87ed0>
args        (195,)
db          <weakproxy at 0x2a95208 to Connection at 0xdad0>
value       ProgrammingError(1146, "Table 'DB2.table1' doesn't exist")
query       'SELECT (1) AS `a` FROM `table1` WHERE `table1`.`ndx` = 195  LIMIT 1'

除了方法之外,几乎所有东西都有效save。朝着正确的方向推动会有很大帮助!

4

2 回答 2

0

您需要手动选择数据库

查看您给出的错误,您应该执行以下操作:

qs = table1.objects.using('DB1 ').filter(pk=id)
# just an example

在这个例子中,我们明确地告诉 Django 定位table1DB1.

于 2012-12-17T14:49:18.673 回答
0

似乎我们无法做任何事情来使不同 mysql 数据库中的两个表之间的关系正常工作。这是设计使然。票17875有一些信息。我们需要编写代码来解决这个问题。

于 2012-12-25T05:57:27.610 回答