PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sự cố khi chèn bằng psycopg

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String -> java.util.Date -> java.sql.Date (có dấu thời gian)

  2. Liệt kê các bảng trong một lược đồ PostgreSQL

  3. Cách tính tăng trưởng hàng tháng trong PostgreSQL

  4. Hibernate, Postgresql:Cột x thuộc loại oid nhưng biểu thức thuộc loại byte

  5. Lấy nhận xét từ cơ sở dữ liệu PostgreSQL