Как выбрать другую БД в ORM Django при использовании в настольном приложении? - PullRequest
0 голосов
/ 19 января 2011

Я пишу настольное приложение с PyQt, где мы планировали использовать sqlite3-базы данных для хранения файлов (вместо pickles, XML, YAML и т. Д.).Причина в том, что наше приложение, скорее всего, позже перейдет в централизованное хранилище данных.(который затем должен взаимодействовать с другими веб-сервисами и т. д. и т. д.)

Прежде чем все скажут "использовать SQLAlchemy и Elixir", я хотел бы указать, почему выбрал Django, а именно потому:

  • Я хорошо знаю Django, он аккуратный, и мне нравится, что это ORM.
  • Когда мы мигрируем, легко добавить веб-интерфейс поверх него.
  • ИмеяАдминистраторский интерфейс позволяет легко отлаживать / проверять БД во время разработки.

В любом случае, моя проблема в том, что Я не могу выбрать разные базы данных sqlite3 , поскольку у Джанго settings.configureвыдает «уже настроенную» ошибку при втором вызове.

Есть какие-нибудь идеи, кроме перезапуска приложения?

(Ни один из многих вопросов Django-desktop-orm здесь на SO не кажетсядля решения этой проблемы ...)

1 Ответ

3 голосов
/ 19 января 2011

Перефразируя 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...