Передача данных из приложения узла в приложение django с использованием postgres - PullRequest
0 голосов
/ 08 апреля 2020

Как эффективно вставить данные из одной postgres базы данных в другую?

У меня есть устаревшее приложение для узлов, которое я конвертирую в Django. Оба проекта используют Postgres. Схема данных в приложении узла значительно отличается от нового приложения Django. Поэтому я написал скрипт, который отображает старые данные в новую схему данных.

Проблема в том, что скрипт мучительно медленный. 5 записей в секунду. У меня более миллиона записей.

Какой самый эффективный способ добиться этого?

Мой текущий скрипт выглядит так:

@transaction.atomic
def migrate_users(cursor):
    select_query = "select * from users order by id" # old database
    cursor.execute(select_query)
    records = cursor.fetchall()
    for row in records:
        record_dict = {}
        record_dict['id'] = row[0]
        record_dict['name'] = row[1]
        record_dict['email'] = row[2]

        defaults = {
                        'name' : record_dict['name'],
                        'extra' : {
                            'old_node_db_values' : {
                                'id': record_dict['id']
                            }
                        }
                    }
        u, created = User.objects.get_or_create(
                    email=record_dict['email'],
                    defaults = defaults
                )
        if created:
            u.set_password(DEFAULT_USER_PASSWORD)
            u.save()

Это упрощенный скрипт. Фактические данные требуют большого массажа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...