2017-09-04 85 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的文档。

相关问题