Форум программистов, компьютерный форум CyberForum.ru

Python: Web

Войти
Регистрация
Восстановить пароль
 
Duuly
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 31
#1

как создать и работать с двумя базами в django - Python

05.01.2017, 23:31. Просмотров 184. Ответов 2
Метки нет (Все метки)

С недавнего времени стал осваивать django и сталкнулся с проблемой работы с двумя базами данных.
По многочисленным примерам, например здесь,
написал роутер, изменил конфиг в проекте.
Вопрос вот в чем. Как правильно описать модели для второй базы,
и потом как с этим работать. с дефолтной базой проблем нет. Как то так.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2017, 23:31     как создать и работать с двумя базами в django
Посмотрите здесь:

Python Django: Как получить массив?
Django, как начать Python
Python Как новичку справиться с Django?
Python Как запустить Django из своей папки?
Как установить Django и создать страницу? Python
Python Как обновить Django?
Python Как установить Django в третьей версии питона?
Как установить и запустить Django? Python
Python Как в PyCharm создать проект Django?
Python Как сделать первый проект в Django?
Python Как настроить Django на Apache2 + WSGI?
Как работает статика в django? Python

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jabbson
Модератор
Эксперт по компьютерным сетям
2985 / 2086 / 394
Регистрация: 03.11.2009
Сообщений: 6,601
Записей в блоге: 3
06.01.2017, 03:12     как создать и работать с двумя базами в django #2
вот тут есть все - и как через роутер, и как вручную
https://docs.djangoproject.com/en/1....s/db/multi-db/

а модели описать точно также как и для первой
Duuly
0 / 0 / 0
Регистрация: 03.04.2016
Сообщений: 31
06.01.2017, 14:22  [ТС]     как создать и работать с двумя базами в django #3
Спасибо, но все равно много чего не дошло. Вот мой код:
роутер
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class ProjectDbRouter(object):
    """A router to control all database operations on models in the myapp application"""
 
    def db_for_read(self, model, **hints):
        """Suggest the database that should be used for read operations for objects of type model."""
        if model._meta.app_label == "home":
            return "overhead_data"
        return None
 
    def db_for_write(self, model, **hints):
        """Suggest the database that should be used for writes of objects of type Model."""
        if model._meta.app_label == "home":
            return "overhead_data"
        return None
 
    def allow_relation(self, obj1, obj2, **hints):
        """Deny any relation if a model in specialapp is involved"""
        if obj1._meta.app_label == "home" or \
                obj2._meta.app_label == "home":
            return False
        return None
 
    def allow_syncdb(self, db, model):
        """Deny sync db for the specialapp models"""
        if model._meta.app_label == "home":
            return False
        if db == "overhead_data":
            return False
        return None
приложение - home, бд - overhead_data.

В бд по умолчанию я ничего связанного с работой не храню.
В overhead_data хранится служебная информация.
И будет бд для хранения информации относящейся к разны странам.

Вот код который я записал в models.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from django.db.models import *
 
# Create your models here.
 
class Services(Model):
    name_en = CharField(max_length = 50, unique=True)
    name_ru = CharField(max_length = 50)
    priority = IntegerField()
 
    class Meta:
        db_table = 'services'
        # managed = False
 
class Comfort(Model):
    name_en = CharField(max_length = 50, unique = True)
    name_ru = CharField(max_length = 50)
    type_point = TextField()
 
    class Meta:
        db_table = 'confort'
        # managed = False
 
class Countries(Model):
    name_en = CharField(max_length = 50, unique = True)
    name_ru = CharField(max_length = 50)
    border = TextField() #svg текст с контуром страны
    flag = TextField() #svg текст с изображением флага
    active = BooleanField() #участвует в поиске (да/нет)
 
    class Meta:
        db_table = 'countries'
        # managed = False
 
class Regions(Model):
    country = IntegerField() #id страны
    name_en = CharField(max_length = 50)
    name_ru = CharField(max_length = 50)
 
    class Meta:
        db_table = 'regions'
        # managed = False
 
class Cities(Model):
    country = IntegerField()
    region = IntegerField()
    name_en = CharField(max_length = 50)
    name_ru = CharField(max_length = 50)
    important = BooleanField() #главный в регионе
 
    class Meta:
        db_table = 'cities'
        # managed = False

Как мне создать таблицы по этим объектам в нужной мне базе.
Yandex
Объявления
06.01.2017, 14:22     как создать и работать с двумя базами в django
Ответ Создать тему
Опции темы

Текущее время: 23:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru