Я выполняю самозаписываемую функцию postgresql
в цикле в несколько раз от Python
. Для этого я использую фреймворк psycopg2
. Функция я написал еси следующую структуру:Временная таблица сбрасывания после выполнения функции
CREATE OR REPLACE FUNCTION my_func()
RETURNS void AS
$$
BEGIN
-- create a temporary table that should be deleted after
-- the functions finishes
-- normally a CREATE TABLE ... would be here
CREATE TEMPORARY TABLE temp_t
(
seq integer,
...
) ON COMMIT DROP;
-- now the insert
INSERT INTO temp_t
SELECT
...
END
$$
LANGUAGE 'plpgsql';
Thats в основном питон часть
import time
import psycopg2
conn = psycopg2.connect(host="localhost", user="user", password="...", dbname="some_db")
cur = conn.cursor()
for i in range(1, 11):
print i
print time.clock()
cur.callproc("my_func")
print time.clock()
cur.close()
conn.close()
Я получаю ошибку, когда я запустить python
сценарий:
---> relation "temp_t" already exists
В основном я хотите измерить, сколько времени требуется для выполнения функции. При этом цикл должен выполняться несколько раз. Сохранение результата SELECT
во временной таблице должно заменить часть CREATE TABLE ...
, которая обычно создавала бы таблицу вывода Почему не postgres
отбросить функцию после выполнения функции от Python
?