我有以下插入到我想要做的多个表。目前我按顺序执行这些操作,如下所示
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 :(得分:0)
默认情况下,当您连接到cursor.commit()
数据库并开始使用游标时,将打开一个事务。当您 <android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="8dp"
android:hardwareAccelerated="true"
app:cardPreventCornerOverlap="false"
android:elevation="0dp">
<ImageView
android:id="@+id/item_cover"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_height="wrap_content" />
</android.support.v7.widget.CardView>
时,将使用相同游标执行的所有语句都将被提交。如果不是,您的陈述将被回滚。因此,在您的情况下,您的两个语句都将被提交或不提交。
查看有关transactions。
的文档