一、大量信息插入

通过python向mysql插入大量数据时,可以有两种方法:

1、for + cursor.execute(sql),最后集中提交(commit())

2、cursor.executemany(sql,list)

两种方法效率上和功能上有一定差异。26万条数据,使用第一种方法需要约1.5小时,使用第二种方法只需要10几秒。

executemany的用法:

import pymysql
list_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 pymysql
conn = pymysql.connect(
	host='XXX.XXX.XXX.XXX', 
	user='XXXXX', 
	password='XXXXX', 
	db='XXXXX', 
	port=3306, 
	charset='utf8',
	autocommit = 1 ,
	)

# 集中大批量操作数据

import pymysql
conn = pymysql.connect(
	host='XXX.XXX.XXX.XXX', 
	user='XXXXX', 
	password='XXXXX', 
	db='XXXXX', 
	port=3306, 
	charset='utf8',
	)

SQl相关操作略

conn.commit()  # 提交

Logo

更多推荐