有没有办法使用psycopg2批量插入到多个表?
问题描述:
我有以下插入到多个表我想要做的。目前我做的顺序他们像下面有没有办法使用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
有没有允许批量插入而不是顺序插入的功能?
感谢
答
通过当您连接到您的postgresql
数据库,并开始使用光标默认情况下,交易被打开。当您使用cursor.commit()
时,您使用同一个光标执行的所有语句都会被提交。如果他们不是,你的陈述将被回滚。所以在你的情况下,你的两个陈述都会被提交或没有提交。
查看关于transactions的文档。