INSERT
příkaz má neplatnou syntaxi. Ve smyčce for, kterou zmiňujete, je něco špatně.
Do otázky byste měli zahrnout smyčku for.
INSERT IN TO "DUMMY1km" (data) VALUES ([[-3000 -3000 -3000 .....
Platný příkaz může vypadat takto – za předpokladu, že váš sloupec je typu integer[]
.
... které byste také měli zahrnout do otázky.
INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])
nebo
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000]) -- note the "ARRAY"
nebo pro 2-rozměrné pole (vypadá trochu podobně v chybové zprávě):
INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])
nebo
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])
Více o zadávání hodnot pole v manuálu.
Ergo:
matData[i] musí obsahovat ARRAY[-3000, -3000]
nebo jedna z dalších uvedených variant platné syntaxe namísto [[-3000 -3000 -3000 ...
což není platné pro celočíselné pole.
Psychopg automaticky převede pole PostgreSQL do seznamu Python . Při sestavování INSERTu je potřeba převést seznam zpět na pole. Cituji odtud:
Python lists are converted into PostgreSQL ARRAYs: >>> cur.mogrify("SELECT %s;", ([10, 20, 30], )) 'SELECT ARRAY[10, 20, 30];'
Odmítnutí odpovědnosti:Jsem expert na PostgreSQL, ne tolik na Python. Pro někoho, kdo zná Python lépe než já, by mělo být snadné odpovídajícím způsobem naformátovat řetězec. Výše uvedený citát jsem našel v rychlém průzkumu na webu.