Как добавить данные столбца из одной таблицы в поле столбца другой таблицы в 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
]
)