SQLAlchemy递归插入表中

时间:2017-01-05 22:59:17

标签: python recursion sqlalchemy

是否有一种简洁的方式来递归执行插入,因此如果批量插入失败,它会一次尝试一半的记录。目前,我正在做这样的事情:

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有更好的方法吗?有没有人有更好的方法?

0 个答案:

没有答案