2 базы данных SQL Server в проекте Django

У меня проблема с загрузкой данных в базу данных1 (по умолчанию). Видите ли, система должна загрузить только те данные, которые находятся в базе данных2 (источник). система работает на машине моего духовника, но у нее загружены два разных порта и используется докер, у меня установлен SQL-сервер. Система запускается, проблема в том, что когда я хочу загрузить данные в базу данных1, она мне говорит, что этих данных нет в базе данных2, значит, их нет. Теперь, если я попытаюсь загрузить данные, которых нет в базе данных2, если они загружаются правильно. Я искал, как изменить порты SQL Server, но не нашел. Может кто-нибудь помочь мне?

DATABASES = {
        'default': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'database1',
            'HOST': 'name\\name',
            'PORT': '',
            'USER': 'user1',
            'PASSWORD': 'password1',
            'OPTIONS': {
                'driver': 'ODBC Driver 13 for SQL Server',
            }
        },
        'source': {
            'ENGINE': 'sql_server.pyodbc',
            'NAME': 'database2',
            'HOST': 'name\\name',
            'PORT': '',
            'USER': 'user2',
            'PASSWORD': 'password2',
            'OPTIONS': {
                'driver': 'ODBC Driver 13 for SQL Server',
            }
        }

Как вы настроили маршрутизаторы базы данных? Вы должны создать маршрутизатор, чтобы указать django, какую базу данных использовать, когда. См. здесь

dirkgroten 20.02.2019 15:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
35
1

Ответы 1

Это конфигурация: def decide_on_model(model): """Small helper function to pipe all DB operations of a worlddata model to the world_data DB""" return 'source' if model._meta.app_label == 'source' else None

class TutoriasRouter: """ Implements a database router so that:

* Django related data - DB alias `default` - MySQL DB `world_django`
* Legacy "world" database data (everything "non-Django") - DB alias `world_data` - MySQL DB `world`
"""
def db_for_read(self, model, **hints):
    return decide_on_model(model)

# def db_for_write(self, model, **hints):
#     return decide_on_model(model)

def db_for_write(self, model, **hints):
    return 'default'

def allow_relation(self, obj1, obj2, **hints):
    # Allow any relation if both models are part of the worlddata app
    # if obj1._meta.app_label == 'source' and obj2._meta.app_label == 'source':
    #     return True
    # # Allow if neither is part of worlddata app
    # elif 'source' not in [obj1._meta.app_label, obj2._meta.app_label]:
    #     return True
    # # by default return None - "undecided"
    return True

def allow_migrate(self, db, app_label, model_name=None, **hints):
    # allow migrations on the "default" (django related data) DB
    if db == 'default' and app_label != 'source':
        return True

    # allow migrations on the legacy database too:
    # this will enable to actually alter the database schema of the legacy DB!

    # if db == 'source' and app_label == "source":
    #    return True

    return False

`

Другие вопросы по теме