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

psycopg2 mapowanie Python :lista wersetów do Postgres :tablica typu złożonego dla instrukcji INSERT

Poszerz swoje wysiłki tylko trochę, co powiesz na:

quote_1 = ("monkeys rock", "False")
quote_2 = ("donkeys rock",  "True")
q_list = [ quote_1, quote_2]
print cur.mogrify("insert into posts VALUES(%s,%s::quotes[])", 
                  ("animals are good", q_list))
#
#                 added explicit cast to quotes[]->^^^^^^^^

Wyjaśnienie :

Jeśli biegasz:

insert into posts 
VALUES('animals are good', ARRAY[
    ('monkeys rock', 'false'),
    ('donkeys rock', 'true')
]);

bezpośrednio w psql otrzymasz:

regress=# insert into posts 
regress-# VALUES('animals are good',ARRAY[
regress-#             ('monkeys rock', 'false'),
regress-#             ('donkeys rock', 'true')
regress-#  ]);
ERROR:  column "q" is of type quotes[] but expression is of type record[]
LINE 1: insert into posts VALUES('animals are good',ARRAY[('monkeys ...
                                                    ^
HINT:  You will need to rewrite or cast the expression.

Rzeczywiście, mówiąc Pg, że twoja anonimowa tablica jest typu quotes[] załatwia sprawę:

regress=# insert into posts 
regress-# VALUES('animals are good',ARRAY[
regress-#           ('monkeys rock', 'false'),
regress-#           ('donkeys rock', 'true')
regress-# ]::quotes[]);
INSERT 0 1

regress=# select * from posts;
       body       |                           q                            
------------------+--------------------------------------------------------
 animals are good | {"(\"monkeys rock\",false)","(\"donkeys rock\",true)"}
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wydajność typu UUID PostgreSQL

  2. Jak usunąć wiele tabel w PostgreSQL za pomocą symbolu wieloznacznego?

  3. Postgresql :błąd składni przy lub w pobliżu -

  4. Tworzenie zimnej gotowości dla PostgreSQL przy użyciu Amazon AWS

  5. ZWRACANIE danych z aktualizowanego widoku nie działa?