是否有一种简洁的方式来递归执行插入,因此如果批量插入失败,它会一次尝试一半的记录。目前,我正在做这样的事情:
def __recursive_import__(conn, insrt_func, validated_rows):
try:
result = conn.execute(insrt_func(validated_rows))
except:
__recursive_import__(conn, insrt_func, validated_rows[len(validated_rows//2):])
__recursive_import__(conn, insrt_func, validated_rows[:len(validated_rows//2)])
def import_row(some_rows):
return """INSERT INTO SomeTable {};""".format(some_rows)
with db.connect('some_db').begin() as conn:
__recursive_import__(conn, import_row, rows_to_insert)
因此,如果某些行因原因而错误... (我正在插入包含大量业务逻辑的数据库),它将继续尝试越来越小的块。这很丑陋,可能不起作用,也很难看。 sqlalchemy有更好的方法吗?有没有人有更好的方法?