У меня есть таблица в Google Cloud Spanner.
CREATE TABLE test_id (
Id STRING(MAX) NOT NULL,
KeyColumn STRING(MAX) NOT NULL,
parent_id INT64 NOT NULL,
Updated TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp=true),
) PRIMARY KEY (Id)
И я пытаюсь выполнить transaction.insert_or_update
через скрипт на python. Для каждой строки в фрейме данных pandas я делаю:
transaction.insert_or_update(
'test_id', columns=['Id','KeyColumn', 'parent_id', 'Updated'],
values=[(uuid.uuid4().hex, row["KeyColumn"], row["parent_id"], spanner.COMMIT_TIMESTAMP)],
)
Я хочу, чтобы, если строка ["KeyColumn"] уже присутствовала в KeyColumn
таблицы, обновите ее parent_id
в противном случае вставьте новую строку в таблицу Spanner, соответствующую этому KeyColumn. Но так как мой первичный ключ - Id
, который генерируется случайным образом uuid.uuid4().hex
, он каждый раз вставляет новую строку.