Как добавить данные столбца из одной таблицы в поле столбца другой таблицы в postgresql с помощью python

Я новичок в django и postgresql. У меня есть две таблицы в postgresql. В одной таблице у меня есть два поля ID и Value. Я хочу добавить данные в столбце ID в поле столбца другой таблицы с именем value_id. В postgres эти таблицы принадлежат одной схеме. Я хочу сделать это через python. Есть ли какой-нибудь способ. пожалуйста, помогите.

    cur = con.cursor()

    db_insert = """INSERT INTO "Database"."TABLE_ONE"
    ("LT_ID_ONE", "LT_ID_TWO")  
    VALUES(
    (SELECT "LT_ID_ONE" FROM "Database"."TABLE_TWO" WHERE "LT_NUM_ONE" =%s), 
    (SELECT "LT_ID_TWO" FROM "Database"."TABLE_THREE" WHERE "LT_NUM_TWO" =%s)
    );"""
    insert_values = (df1.iloc[0, 0], df1.iloc[0, 1])

    cur.execute(db_insert, insert_values)

Я делаю это в django, поэтому вышеупомянутый метод не сработает. может ли кто-нибудь предложить какой-нибудь способ, пожалуйста

Вы можете сделать это с помощью файла миграции

class Migration(migrations.Migration):

    dependencies = [
        ( .....),
    ]
    operations = [
        migrations.AddField(
            model_name="Model1",
            name="field1",
        ),
        migrations.RunPython(forwards_migrate_data_from_field2_to_field1,reverse_migrate_data_from_field2_to_field1),
        migrations.RemoveField(
            model_name='model2',
            name='field2'
        )
    ]

и в функции forwards_migrate_data_from_field2_to_field1 вам нужно выполнить процесс перемещения данных проверьте эту ссылку в документации django:https://docs.djangoproject.com/en/4.1/ref/migration-operations/#runpython


def forwards_migrate_data_from_field2_to_field1(apps, schema_editor):
    # we move from model2 to model1
    model2 = apps.get_model("app", "model2")
    model1 = apps.get_model("app", "model1")
    db_alias = schema_editor.connection.alias
    list_field2 = (
        models2.objects.using(db_alias)
        .all()
        .values_list("field2",)
    )
    model1.objects.using(db_alias).bulk_create(
        [
            model1(
                field2=field2,
            )
            for field2 in list_field2
        ]
    )



Вернуться на верх