在进行大数据量插入时,使用execute效率很低。
所以改用executemany
executemany(query,args)
能同时执行多条语句,执行同样多的语句可比execute()快很多,强烈建议执行多条语句时使用executemany
query: sql模板字符串,
例如 'insert into table(id,keywords) values(%s,%s)'
args: 模板字符串的参数,是一个列表,列表中的每一个元素必须是元组!!!
例如: [(1,'python'),(2,'java'),(3,'c'),(4,'golang')]
executemany使用
sql = "insert into tablename(id,keywords) value(%s,%s)"
results = [(1,'python'),(2,'java'),(3,'c'),(4,'golang')]
cursor = db.cursor()
try:
cursor.executemany(sql,results)
except:
db.rollback()
traceback.print_exc()
finally:
cursor.close()
以上代码当执行executemany出现Duplicate entry异常时,插入失败。
如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:
insert ignore into tablename(id,keywords) value(%s,%s)
这样当有重复记录就会忽略,执行后返回数字0