Найти - Пользователи
Полная версия: Подключение второй базы данных
Начало » Django » Подключение второй базы данных
1
easthy
Необходимо подключить вторую базу данных, содержающую примерно 30 000 строк. Подскажите как это можно сделать.

Отредактировал файл setting.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/var/www/working/db.sqlite3',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    },
    'okato': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': '/var/www/testing/okato.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}
Но команда
./manage.py dbshell
.databases
выводит
0 main /var/www/working/db.sqlite3

Что делаю не так?

Как после настройки подключения базы данных сделать из неё выборку? Сначала ведь надо создать модель? Пробовал
./manage.py inspectdb > inspected_models.py
Процесс обрывается на середине, даже при одной подключенной базе… в чем причина не знаю.
Видимо необходимо написать вручную модель. Подскажите как для следующего кода

CREATE TABLE `class_okato` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
`name` VARCHAR(512)  NOT NULL ,
`code` VARCHAR(11)  NOT NULL ,
`control_number` SMALLINT  NOT NULL ,
`parent_id` INT  NULL DEFAULT NULL,
`parent_code` VARCHAR(11)  NULL DEFAULT NULL,
`node_count` SMALLINT  NOT NULL DEFAULT 0,
`additional_info` VARCHAR(128)  NULL DEFAULT NULL,
CONSTRAINT `class_okato_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES class_okato (`id`));

Ведь надо не просто ещё модель описать, но указать, что она относится к другой базе данных. Как?

Как после использовать базу вроде ясно:
>>> # This will run on the 'other' database.
>>> Author.objects.using('okato').all()
easthy
Один вопрос похоже снят

./manage.py inspectdb --database=okato > inspected_models.py

вывела модель:

from django.db import models
class ClassOkato(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=512)
    code = models.CharField(max_length=11)
    control_number = models.SmallIntegerField()
    parent_id = models.IntegerField(null=True, blank=True)
    parent_code = models.CharField(max_length=11, blank=True)
    node_count = models.SmallIntegerField()
    additional_info = models.CharField(max_length=128, blank=True)
    class Meta:
        db_table = u'class_okato'

непонятно однако подключена ли база, почему dbshell показывает, что подключена лишь одна база
easthy
Хотя не полностью вопрос снят. Куда делся ForeignKey в модели?

CONSTRAINT `class_okato_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES class_okato (`id`));
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB