Быстро конвертировать из массивов Python в PostgreSQL?
Это дополнительный вопрос к:Как привести к массиву int в PostgreSQL?
Я думаю, как преобразовать тип данных Python из массива-массива со знаком целого числа вint
PostgreSQL быстро:
import numpy as np; # use any data format of Python here
event = np.array([[1,2],[3,4]]);
где[]
должен быть заменен{}
и в окружении'
если вручную. В PostgreSQL в качестве синтаксиса типа данных принимается следующее
...
FOR EACH ROW EXECUTE PROCEDURE insaft_function('{{1,2},{3,4}}');
Предложение @ JohnMeestr(event).replace('[','{').replace(']','}').replace('\n ',',')
Предложение @ ErwinBrandstetterПридерживайтесь целых чисел со знаком, потому что это поддерживается стандартом SQL. Карта кint
так что только на стороне PostgreSQL:
TG_ARGV::int[]
Я хочу придерживаться этого предложения Эрвина.
Тестовый запуск более простой версии ответа @ ErwinBrandstetterЯ должен упростить его ответ, чтобы сохранить его достаточно сфокусированным, удалив имя таблицы из функции, так что просто оставив триггер для одной начальной таблицыизмерения:
CREATE OR REPLACE FUNCTION f_create_my_trigger(_arg0 text)
RETURNS void AS
$func$
BEGIN
EXECUTE format($
DROP TRIGGER IF EXISTS insaft_ids ON measurements;
CREATE TRIGGER insaft_ids
AFTER INSERT ON measurements
FOR EACH ROW EXECUTE PROCEDURE insaft_function(%1$L)$
, _arg0
);
END
$func$ LANGUAGE plpgsql;
И я бегу:
sudo -u postgres psql detector -c "SELECT f_create_my_trigger('[[1,2],[3,4]]');"
Но получите пустой вывод:
f_create_my_trigger
---------------------
(1 row)
Как вы можете сопоставить сint
для PostgreSQL 9.4 в Python?