如何在没有迁移的情况下将Django连接到外部数据库

时间:2017-09-15 06:48:12

标签: python django django-models

我想将我的DjangoApp连接到外部MySQL数据库。 我不想迁移到这个表,我的意思是我不想创建新表,只是拉数据。 我的问题是 - 如何做到这一点? 如果我在设置文件中将此表添加到DATABASES,则控制台会显示有关强制迁移的错误。

你能推荐我什么? 提前谢谢,

3 个答案:

答案 0 :(得分:1)

您可以通过DATABASES设置连接到该数据库。实际上,迁移错误仅是警告。您可以managedFalse

class MyModel(models.Model):
    field1 = models.CharField()
    ...
    class Meta:
        managed = False

更多info

答案 1 :(得分:1)

您可以使用此

连接到外部数据库
settings.configure(
DATABASE_ENGINE = 'mysql',
DATABASE_NAME = 'db_name',
DATABASE_USER = 'db_user',
DATABASE_PASSWORD = 'db_pass',
DATABASE_HOST = 'http://YourDataBaseAdress.com/mydatabase',
DATABASE_PORT = '6676',
TIME_ZONE = 'America/Sao_Paulo',) //if you want to connect this forever add this
'CONN_MAX_AGE': None,

并且无需迁移即可

class Meta:
    managed = False

在您的特定型号中。

从外部数据库中提取 数据,您可以看到here

答案 2 :(得分:0)

在这种情况下,我建议使用两个数据库。拳头可以使用标准sqllite db,并将用于存储登录数据和管理相关的东西。

如果要为旧数据库创建类定义,可以使用python manage.py inspectdb > mysql_models.txt。这也会将managed = False添加到您的模型类元中,并使django关闭丢失的迁移。

强制迁移警告的含义是:警告。您不必应用迁移。

文档: https://docs.djangoproject.com/en/1.11/topics/db/multi-db/

开始使用旧数据库之前的一种警告:检查它是否符合django orm。有一些数据库功能(如复合主键)不能与django orm一起使用。