O
INSERT
instrução tem sintaxe inválida. Há algo errado dentro do loop for que você mencionou.Você deve incluir o loop for na pergunta.
INSERIR EM "DUMMY1km" (dados) VALORES ([[-3000 -3000 -3000 .....
Uma instrução válida pode ser assim - supondo que sua coluna seja do tipo
integer[]
.... que você também deve incluir na pergunta.
INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])
ou
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000]) -- note the "ARRAY"
ou para uma matriz bidimensional (parece um pouco como na mensagem de erro):
INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])
ou
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])
Mais sobre a entrada de valor de matriz no manual.
Portanto:
matData[i] precisa conter
ARRAY[-3000, -3000]
ou uma das outras variantes listadas de sintaxe válida em vez de [[-3000 -3000 -3000 ...
que não é válido para uma matriz de inteiros. O Psychopg converte automaticamente um matriz PostgreSQL em uma lista Python . Ao construir o INSERT, você precisa converter a lista de volta em um array. Cito daqui:
Python lists are converted into PostgreSQL ARRAYs: >>> cur.mogrify("SELECT %s;", ([10, 20, 30], )) 'SELECT ARRAY[10, 20, 30];'
Isenção de responsabilidade:sou especialista em PostgreSQL, não tanto em Python. Para alguém que conhece Python melhor do que eu, deve ser fácil formatar a string de acordo. Encontrei a citação acima em uma rápida pesquisa na web.