2017-09-04 95 views
0

我有以下插入到多個表我想要做的。目前我做的順序他們像下面有沒有辦法使用psycopg2批量插入到多個表?

db_cursor.execute("INSERT INTO my_table1 (\ 
         my_foreign_id1, \ 
         my_foreign_id2, \ 
         some_meta_info1, \ 
         some_meta_info2) \ 
       VALUES (%s, %s, %s, %s) RETURNING *", 
     (my_dict["my_foreign_id1"], 
     my_dict["my_foreign_id2"], 
     my_dict["some_meta_info1"], 
     my_dict["some_meta_info2"]) 
    ) 

    db_cursor.execute("INSERT INTO my_table2 (\ 
         my_foreign_id1, \ 
         my_foreign_id2, \ 
         some_note_info1, \ 
         some_note_info2) \ 
       VALUES (%s, %s, %s, %s) RETURNING *", 
     (my_dict["my_foreign_id1"], 
     my_dict["my_foreign_id2"], 
     my_dict["some_note_info1"], 
     my_dict["some_note_info2"]) 
    ) 

我想要做的插入件之上的同時,同時確保他們在一個犯這樣任何人都失敗我就可以回滾。

psycopg2有沒有允許批量插入而不是順序插入的功能?

感謝

回答

0

通過當您連接到您的postgresql數據庫,並開始使用光標默認情況下,交易被打開。當您使用cursor.commit()時,您使用同一個光標執行的所有語句都會被提交。如果他們不是,你的陳述將被回滾。所以在你的情況下,你的兩個陳述都會被提交或沒有提交。

查看關於transactions的文檔。

相關問題