PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

psycopg2 mapping Python :daftar dicts ke Postgres :array tipe komposit untuk pernyataan INSERT

Perluas upaya Anda sedikit saja, bagaimana dengan:

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[]->^^^^^^^^

Penjelasan :

Jika Anda menjalankan:

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

langsung di psql Anda akan mendapatkan:

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.

Benar saja, memberi tahu Pg bahwa array anonim Anda bertipe quotes[] melakukan triknya:

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. Postgres array json tanggal terbaru

  2. Bagaimana cara memasukkan hasil nol / 0 dalam COUNT agregat?

  3. sp_send_dbmail alternatif di postgres? Cara mudah mengirim laporan email Postgres?

  4. Persyaratan kunci utama dalam SQL mentah memperumit kueri di Django

  5. Kesalahan:INTO ditentukan lebih dari sekali pada atau di dekat INTO