sql >> Database >  >> RDS >> PostgreSQL

Probleem voor invoegen met psycopg

De INSERT instructie heeft een ongeldige syntaxis. Er klopt iets niet in de for-lus die u noemt.
U moet de for-lus in de vraag opnemen.

INVOER IN "DUMMY1km" (gegevens) WAARDEN ([[-3000 -3000 -3000 .....

Een geldige verklaring kan er als volgt uitzien - ervan uitgaande dat uw kolom van het type integer[] is .
... die u ook in de vraag moet opnemen.

INSERT INTO "DUMMY1km"(data) VALUES ('{-3000, -3000}'::int[])

of

INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[-3000, -3000])  -- note the "ARRAY"

of voor een 2-dimensionale array (lijkt een beetje op dat in het foutbericht):

INSERT INTO "DUMMY1km"(data) VALUES ('{{-3000, -3000}, {-3000, -3000}}'::int[])

of

INSERT INTO "DUMMY1km"(data) VALUES (ARRAY[[-3000, -3000],[-3000, -3000]])

Meer over het invoeren van array-waarden in de handleiding.

Ergo:

matData[i] moet ARRAY[-3000, -3000] bevatten of een van de andere vermelde varianten van geldige syntaxis in plaats van [[-3000 -3000 -3000 ... wat niet geldig is voor een integerarray.

Psychopg converteert automatisch een PostgreSQL-array in een Python-lijst . Bij het bouwen van de INSERT moet u de lijst terug naar een array converteren. Ik citeer van hier:

Python lists are converted into PostgreSQL ARRAYs:

>>> cur.mogrify("SELECT %s;", ([10, 20, 30], ))
'SELECT ARRAY[10, 20, 30];'

Disclaimer:ik ben een expert met PostgreSQL, niet zozeer met Python. Voor iemand die Python beter kent dan ik, zou het gemakkelijk moeten zijn om de string dienovereenkomstig te formatteren. Ik vond het bovenstaande citaat in een snel onderzoek op internet.




  1. CASESTUDY:ARKWARE MS ACCESS CRM

  2. ScaleGrid-machtigingen configureren op AWS met behulp van een IAM-beleidssjabloon

  3. BESTEL OP DATUM met eerst NULLS en vervolgens de meest recente datums

  4. HikariCP - verbinding is niet beschikbaar