我的数据库生成了很多孤立页面,我正试图找出原因。
我经常在我的 python 代码中使用fdb 驱动程序这样做:
cursor = connection.cursor()
for item in list:
try:
cursor.execute(sql_insert_statement, (item,))
except fdb.DatabaseError:
log(f"Exception: duplicate found in database for {item}")
continue
connection.commit()
由于违反主键唯一约束(这很好),我生成了很多异常,并且当列表中的所有项目都执行了它们的 INSERT 语句时,我只提交一次“主”事务。
这是正确的做事方式吗?或者我是否必须在每次发生异常后提交(带有一个无论其结果如何finally
都会在每次发生后触发的子句)?try
至少,从文档cursor.execute
来看,我怀疑我是否需要在每次之后提交。