【问题标题】:Using existing database in Django在 Django 中使用现有数据库
【发布时间】:2014-10-31 02:00:27
【问题描述】:

我在 Django 应用程序中使用多个数据库。 default 数据库是 Django 为用户身份验证等创建的数据库。然后我有一个 vo 数据库,其中包含现有数据,我计划将其用于内容生成。

我希望models.py 中的类链接到vo 中的现有表。但是,当我这样做时

manage.py syncdb --database=vo

创建了一组新的空表。顺便说一句,这是一个 SQLite3 数据库。

如何将数据库中的现有表链接到 Django 中 models.py 上的类?

非常感谢。

【问题讨论】:

  • 您想要实际链接,其中 vo 的更改反映在查询中,还是将 vo 复制到默认值一次就足够了?
  • 你想用多个数据库创建一个 ForeignKey 吗?
  • 实际上只需将 db 镜像到 models.py 中就足够了。这是通过以下答案实现的。此外,不需要外键。谢谢。

标签: python django


【解决方案1】:
  1. 您需要将您的数据库vo 添加到设置中。

如果你有这样的数据库设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': os.path.join(DIR, 'django.sqlite3'),
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
}

像这样添加vo数据库设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': os.path.join(DIR, 'django.sqlite3'),
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },

    # this your existing db 
    'vo': { 
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(DIR, 'vo.sqlite'),
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
}
  1. 然后就可以从数据库中自动生成模型了。

    $ ./manage.py inspectdb --database=vo > your_app/models.py
    
  2. 配置数据库路由器。

查看:Using Django's Multiple Database Support

【讨论】:

  • 非常感谢,这有效。现在我只需要编辑和细化它生成的 models.py。
猜你喜欢
  • 2018-10-11
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 2016-06-03
  • 2010-12-11
相关资源
最近更新 更多