Konstantin18ko
@Konstantin18ko
Стоматолог

Как правильно делать миграции в связке Django + MongoDB?

Есть модель:
class User(AbstractUser):
    user_id = models.IntegerField(unique=True)
    appeal = models.TextField()
    timestamp = models.IntegerField()
    status = models.IntegerField()
    ref = models.IntegerField()
    btc_wallet = models.TextField()
    eth_wallet = models.TextField()
    start_sub = models.IntegerField()
    end_sub = models.IntegerField()
    lang = models.IntegerField()
    block = models.BooleanField(default=False)
    test_count = models.IntegerField()
    confirmation_code = models.CharField(max_length=10)
    email = models.EmailField()
    password = models.TextField()
    btc_wallet_i = models.TextField()

    def __str__(self):
        return '{}'.format(self.user_id)

Есть вторая БД, которая перебирается циклом.
import pymongo

conn = pymongo.MongoClient("localhost", 27017)
db = conn["crypto_signals"]
users_old_db = db["users"]
db = conn["magicsignals"]
users_new_db = db["user_user"]

users = users_old_db.find()

for user in users:
    users_new_db.insert_one(user)


Вылетает ошибка

root@magicsignals:/var/www/html# python3 copy_db.py
Traceback (most recent call last):
File "copy_db.py", line 12, in
users_new_db.insert_one(user)
File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 693, in insert_one
session=session),
File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 607, in _insert
bypass_doc_val, session)
File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 595, in _insert_one
acknowledged, _insert_command, session)
File "/usr/local/lib/python3.6/dist-packages/pymongo/mongo_client.py", line 1248, in _retryable_write
return self._retry_with_session(retryable, func, s, None)
File "/usr/local/lib/python3.6/dist-packages/pymongo/mongo_client.py", line 1201, in _retry_with_session
return func(session, sock_info, retryable)
File "/usr/local/lib/python3.6/dist-packages/pymongo/collection.py", line 592, in _insert_command
_check_write_command_response(result)
File "/usr/local/lib/python3.6/dist-packages/pymongo/helpers.py", line 217, in _check_write_command_response
_raise_last_write_error(write_errors)
File "/usr/local/lib/python3.6/dist-packages/pymongo/helpers.py", line 198, in _raise_last_write_error
raise DuplicateKeyError(error.get("errmsg"), 11000, error)
pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: magicsignals.user_user index: __primary_key__ dup key: { : null }


Как избавиться от дубликации?
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ranwise
@Ranwise
Django не поддерживает монгу, о каких миграциях вы пишете?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы