INSERT
instrukcja ma nieprawidłową składnię. Coś jest nie tak we wspomnianej pętli for.
Powinieneś uwzględnić pętlę for w pytaniu.
WSTAW W „DUMMY1km” (dane) WARTOŚCI ([[-3000 -3000 -3000 .....
Prawidłowa instrukcja może wyglądać tak — zakładając, że Twoja kolumna jest typu integer[]
.
... które również należy uwzględnić w pytaniu.
INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])
lub
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000]) -- note the "ARRAY"
lub dla tablicy dwuwymiarowej (wygląda trochę tak w komunikacie o błędzie):
INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])
lub
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])
Więcej o wprowadzaniu wartości w tablicy w podręczniku.
Ergo:
matData[i] musi zawierać ARRAY[-3000, -3000]
lub jeden z pozostałych wymienionych wariantów prawidłowej składni zamiast [[-3000 -3000 -3000 ...
co nie jest poprawne dla tablicy liczb całkowitych.
Psychopg automatycznie konwertuje tablicę PostgreSQL na listę Pythona . Podczas budowania INSERT musisz przekonwertować listę z powrotem na tablicę. Cytuję stąd:
Python lists are converted into PostgreSQL ARRAYs: >>> cur.mogrify("SELECT %s;", ([10, 20, 30], )) 'SELECT ARRAY[10, 20, 30];'
Zastrzeżenie:Jestem ekspertem od PostgreSQL, nie tyle od Pythona. Dla kogoś, kto zna Pythona lepiej ode mnie, odpowiednie formatowanie łańcucha powinno być łatwe. Powyższy cytat znalazłem w szybkim badaniu w sieci.