sql >> Database teknologi >  >> RDS >> PostgreSQL

Problem med indsættelse ved hjælp af psycopg

INSERT sætningen har ugyldig syntaks. Der er noget galt inde i for-løkken, du nævner.
Du bør inkludere for-løkken i spørgsmålet.

INDSÆT I "DUMMY1km" (data) VÆRDI ([[-3000 -3000 -3000 .....

En gyldig sætning kunne se sådan ud - forudsat at din kolonne er af typen integer[] .
... som du også skal have med i spørgsmålet.

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

eller

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

eller for et 2-dimensionelt array (ser lidt sådan ud i fejlmeddelelsen):

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

eller

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

Mere om input af matrixværdi i manualen.

Ergo:

matData[i] skal indeholde ARRAY[-3000, -3000] eller en af ​​de andre listede varianter af gyldig syntaks i stedet for [[-3000 -3000 -3000 ... hvilket ikke er gyldigt for et heltalsarray.

Psychopg konverterer automatisk et PostgreSQL-array ind på en Python-liste . Når du bygger INSERT, skal du konvertere listen tilbage til et array. Jeg citerer herfra:

Python lists are converted into PostgreSQL ARRAYs:

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

Ansvarsfraskrivelse:Jeg er ekspert med PostgreSQL, ikke så meget med Python. For nogen, der kender Python bedre end mig, burde det være nemt at formatere strengen i overensstemmelse hermed. Jeg fandt ovenstående citat i en hurtig research på nettet.




  1. Oracle JDBC intermitterende forbindelsesproblem

  2. Monitoring Galera Cluster for MySQL eller MariaDB - Understanding Metrics (Opdateret)

  3. SQLiteDiskIOException med fejlkode 10:disk I/O fejl

  4. Bryd murene ned! Sådan unsilo dine data