Mongoengine: получить данные и сохранить в другой БД

Я впервые использую mongoengine, я знаю концепцию ORM. Я хочу знать, могу ли я получить данные в одной БД и использовать тот же объект для хранения в другой БД?

class User(Document):
    email = EmailField(required=True, unique= True)
    salary = IntField(require=True)

connect(alias='default',db='tumblelog')
connect(alias='testdb',db='testdb')


users = User.objects

with switch_db(User,'testdb') as User:
    for user in users:
        User(email=user.email,salary=user.email).save  # it works
        user.save() #doesn't works

Да, у тебя должно получиться. Вы пробовали делать? Столкнулись с какой-либо проблемой?

Munosphere 06.08.2018 11:51

Я пробовал, но мне не удалось сохранить в другой БД тем же объектом

MinHsiang Wu 06.08.2018 12:26

Можете ли вы показать больше своего кода? А в чем именно ошибка?

Munosphere 06.08.2018 13:03

пример кода в моем сообщении, и ошибки нет ~~~ просто ничего не произошло

MinHsiang Wu 07.08.2018 06:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
48
1

Ответы 1

Я обнаружил, что, используя ORM для получения данных из одной БД, он создает объект, уникальный для той БД, из которой вы его получаете. Вы не сможете использовать тот же объект для сохранения в другой БД.

Я бы посоветовал вам инициализировать пустой объект, например User, для другой БД и заполнить его значениями из исходного объекта, а затем сохранить.

Возможно, вы захотите взглянуть на этот вопрос. Продолжение: использование нескольких баз данных

Спасибо за ответ. В ORM объект прикрепляется к конкретной БД. Можно ли отсоединить и присоединить к другой БД?

MinHsiang Wu 07.08.2018 07:48

Я не думаю, что это возможно. Каждый экземпляр объекта создается с такой информацией о базе данных, как (хост базы данных, URL-адрес и т. д.).

Munosphere 07.08.2018 08:20

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