INSERT
câu lệnh có cú pháp không hợp lệ. Có điều gì đó không ổn bên trong vòng lặp for mà bạn đề cập.
Bạn nên đưa vòng lặp for vào câu hỏi.
CHÈN VÀO GIÁ TRỊ "DUMMY1km" (dữ liệu) ([[-3000 -3000 -3000 .....
Một câu lệnh hợp lệ có thể trông như thế này - giả sử cột của bạn thuộc loại integer[]
.
... bạn cũng nên đưa vào câu hỏi.
INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])
hoặc
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000]) -- note the "ARRAY"
hoặc đối với mảng 2 chiều (trông giống như trong thông báo lỗi.):
INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])
hoặc
INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])
Thông tin thêm về nhập giá trị mảng trong sách hướng dẫn.
Ergo:
matData [i] cần chứa ARRAY[-3000, -3000]
hoặc một trong các biến thể được liệt kê khác của cú pháp hợp lệ thay vì [[-3000 -3000 -3000 ...
không hợp lệ cho một mảng số nguyên.
Psychopg tự động chuyển đổi mảng PostgreSQL vào danh sách Python . Khi xây dựng INSERT, bạn cần chuyển đổi danh sách trở lại một mảng. Tôi trích dẫn từ đây:
Python lists are converted into PostgreSQL ARRAYs: >>> cur.mogrify("SELECT %s;", ([10, 20, 30], )) 'SELECT ARRAY[10, 20, 30];'
Tuyên bố từ chối trách nhiệm:Tôi là một chuyên gia về PostgreSQL, không nhiều về Python. Đối với một số người biết Python tốt hơn tôi, sẽ dễ dàng định dạng chuỗi cho phù hợp. Tôi đã tìm thấy câu trích dẫn ở trên trong một nghiên cứu nhanh trên web.