PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problem do wstawienia za pomocą psycopg

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Railsy 3.1:Odpytywanie Postgresa o rekordy w przedziale czasowym

  2. Apache Spark:połączenie JDBC nie działa

  3. PostgreSQL:Pokaż tabele w PostgreSQL

  4. Zapytanie SQL, aby uzyskać najnowszy wiersz dla każdego wystąpienia danego klucza

  5. Dynamicznie generuj kolumny dla tabeli krzyżowej w PostgreSQL