【问题标题】:In Django, how to implement foreign key relations between tables in different mysql dbs在Django中,如何实现不同mysql dbs中表之间的外键关系
【发布时间】:2012-12-04 12:03:25
【问题描述】:

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

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

例如,DB1 中的表 table1DB2 中的某些 table2 中被引用。 Django 尝试(未成功)在DB2 中找到table1,并引发DatabaseError

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 方法外,几乎所有东西都可以工作。朝着正确的方向前进会有很大帮助!

【问题讨论】:

    标签: django django-models django-admin foreign-key-relationship


    【解决方案1】:

    您需要Manually Selecting a Database

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

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

    在这个例子中,我们明确告诉 Django 在DB1 中定位table1

    【讨论】:

    • Aamir,这是我尝试通过管理员“添加”工具保存对象时的输出。我无法控制这里的代码。如果有帮助,它会在ForeignKeydjango.db.models.related 类的validate 函数上失败。
    【解决方案2】:

    似乎我们无法在不同 mysql 数据库中的两个表之间建立关系。这是设计使然。票17875 有一些信息。我们需要编写代码来解决这个问题。

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2020-07-12
      • 2018-11-05
      相关资源
      最近更新 更多