pymysql中使用excutemany批量插入数据和避免重复项

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在进行大量数据插入MySQL中时使用excute的效率非常低所以将列表数据插入数据库中可以使用excutemany()。
关于excute和excutemany的执行效率可以参考以下博客
Python使用pymysql模块的executemany()方法批量插入数据 提高Mysql数据库写入效率

再此介绍以下excutemany()方法
executemany(query,args)能同时执行多条语句强烈建议执行多条语句时使用executemany()。

  • querysql语句
    例如 ‘INSERT INTO TABLE(id,language) values(%s,%s)’
  • args模板字符串的参数是一个列表列表中的每一个元素必须是元组
    例如[(1,‘Java’),(2,‘Python’),(3,‘Golang’),(4,‘C’),(5,‘C++’)]

如果是嵌套列表可以使用以下方法将列表数据转为元组数据

results = [[1, ‘Java’], [2, ‘Python’], [3, ‘GoLang’], [4, ‘C’], [5, ‘C++’]]
print(list(map(tuple, results)))
输出结果
[(1, ‘Java’), (2, ‘Python’), (3, ‘GoLang’), (4, ‘C’), (5, ‘C++’)]

executemany()的使用

db = pymysql.connect(host='localhost', user='root', password='001314', database='flask')
    cursor = db.cursor()
sql = "insert into tablename(id,keywords) value(%s,%s)"
results = [(1,'Java'),(2,'Python'),(3,'GoLang'),(4,'C'),(5,'C++')]
try:
    cursor.executemany(sql,results)
except:
    db.rollback()
    print("插入失败", e)
finally:
    db.commit()
    cursor.close()
    db.close()

以上代码当执行executemany出现Duplicate entry异常时插入失败。
如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用
INSERT IGNORE INTO TABLE(id,language) values(%s,%s)
这样当有重复记录就会忽略执行后返回数字0

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql

“pymysql中使用excutemany批量插入数据和避免重复项” 的相关文章