在桌面应用程序中使用时,如何在Django的ORM中选择另一个数据库?

时间:2011-01-19 15:55:46

标签: django orm

我正在用PyQt编写桌面应用程序,我们计划使用sqlite3-databases进行文件存储(而不是pickle,XML,YAML等)。原因是我们的应用程序可能稍后迁移到集中式数据存储。 (然后需要与其他基于Web的服务等进行通信。)

在每个人都说“使用SQLAlchemy和Elixir”之前,我想指出为什么选择Django,因为:

  • 我很了解Django,它很整洁,我喜欢它的ORM。
  • 当我们迁移时,很容易在其上添加web-ui。
  • 使用Admin-interface可以在开发过程中轻松调试/检查数据库。

无论如何,我的问题是我无法选择不同的sqlite3数据库,因为Django的settings.configure会在第二次调用时抛出'已配置'错误。

除了重新启动应用程序之外,还有什么想法?

(关于SO的许多Django-desktop-orm问题似乎没有解决这个问题......)

1 个答案:

答案 0 :(得分:3)

释义http://docs.djangoproject.com/en/dev/topics/db/multi-db/

在settings.py中定义多个数据库。

DATABASES = {
    'default': {
        'NAME': 'defaultdb',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'postgres_user',
        'PASSWORD': 's3krit'
    },
    'other': {
        'NAME': 'otherdb',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'priv4te'
    }
}

然后您可以手动选择数据库。

>>> # This will run on the 'default' database.
>>> Author.objects.all()

>>> # So will this.
>>> Author.objects.using('default').all()

>>> # This will run on the 'other' database.
>>> Author.objects.using('other').all()