python操作mysql批量插入
短信预约 -IT技能 免费直播动态提醒
一、大量信息插入
通过python向mysql插入大量数据时,可以有两种方法:
for + cursor.execute(sql),最后集中提交(commit())
cursor.executemany(sql,list)
两种方法效率上和功能上有一定差异。26万条数据,使用第一种方法需要约1.5小时,使用第二种方法只需要10几秒。
executemany的用法:
import pymysqllist_1 = [('a',1),('b',2),(None,3)] # 元素是不是元组都可以sql_1 = 'insert into 表明(字段1,字段2) values(%s,%s)' # 注意,这里的%s不需要加引号,使用execute需要加引号。另外,executemany 在执行过程中能够将python的None转为sql的null,这一点挺方便的db = pymysql.connect(host= ....)cursor = db.cursor()cursor.executemany(sql_1,list_1)db.commit()cursor.close()db.close()print('完成')
二、自动提交
在创建连接的时候,增加参数 autocommit = 1 ,当发生update等操作时,会实时更新到数据库内。否则要通过 conn.commit() 来提交到数据库进行具体操作。
如果没有设置自动提交,也没有手动提交,当进行插入或更新等操作时,只在本地客户端能看到更新,在其他客户端或数据库内,数据无变化。
# 实时操作,适合随时少量、频繁的更新import pymysqlconn = pymysql.connect(host='XXX.XXX.XXX.XXX', user='XXXXX', password='XXXXX', db='XXXXX', port=3306, charset='utf8',autocommit = 1 ,)# 集中大批量操作数据import pymysqlconn = pymysql.connect(host='XXX.XXX.XXX.XXX', user='XXXXX', password='XXXXX', db='XXXXX', port=3306, charset='utf8',)SQl相关操作略conn.commit() # 提交
来源地址:https://blog.csdn.net/pxx000000/article/details/126600034
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341