Я пытаюсь вызвать функцию PostGreSQL из Python, используя SQLAlchemy: функция выглядит так:
CREATE OR REPLACE FUNCTION insert_all(ID1 VARCHAR(20), ID2 VARCHAR(20),
trans_00 VARCHAR(1000), trans_1G VARCHAR(1000), trans_1S VARCHAR(1000),
cont VARCHAR(1000), fr VARCHAR(1000), hasmod VARCHAR(1), act_ch FLOAT,
cat_ch VARCHAR(2), count INT RETURNS void AS $$
...
END;
$$ LANGUAGE plpgsql;
В питоне я пробовал:
_upload={'ID1':linesplit[0], 'ID2':linesplit[1], 'trans_00':linesplit[2],
'trans_1G':linesplit[3], 'trans_1S':linesplit[4],
'cont':linesplit[5], 'fr':linesplit[6], 'hasmod':linesplit[7],
'act_ch':linesplit[8], 'cat_ch':linesplit[9], 'count':linesplit[10]}
a=self.connection.execute(sqlalchemy.text('select
insert_all(:ID1, :ID2, :trans_00, :trans_1G, :trans_1S, :cont, :fr,
:hasmod, :act_ch, :cat_ch, :count) from dual'), _upload)
Я получаю ошибку:
sqlalchemy.exc.InvalidRequestError: A value is required for bind parameter '1' (Background on this error at: http://sqlalche.me/e/cd3x)
Как вы думаете, было бы возможно сделать пакетную вставку (вместо использования _upload={...}
используйте _upload.append({...})
и вставьте больше строк одновременно)?