sql >> Databáze >  >> RDS >> PostgreSQL

Problém pro vložení pomocí psycopg

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.




  1. Nejlepší užitečné dotazy AWR pro upgrade R12.2/R12.1

  2. Co je omezení primárního klíče v databázi SQL Server - SQL Server / Výukový program T-SQL, část 54

  3. Jak převést číslo na slova - ORACLE

  4. Jak aktualizovat všechny sloupce pomocí INSERT ... ON CONFLICT ...?