目录

试想一种情况? 假如有很多格式相同的数据需要插入MYSQL数据库,但是如果一条一条插入那样就太消耗性能与时间了?
于是我们选择批量插入可是应该怎么利用好这个批量插入语句(executemany)呢?
下面就上代码
- #传入3个列表
- def mysql_r_w(title_all, href_all, content_all):
- # 连接数据库
- conn = pymysql.connect(user='root', password='123456', database="pythondb")
- # 加载游标
- curs = conn.cursor()
- # 创建数据库语句
- sql = "create DATABASE IF NOT EXISTS pythonDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;"
- # 执行语句
- curs.execute(sql)
- # 插入数据,%s不能加引号!!!
-
- sql_1 = "insert into API_py(title,href,content) values(%s,%s,%s)"
-
- #获取列表长度
- length = len(title_all)
- #新建一个列表,用于整合数据
- data_all = []
- for i in range(length):
- temp = (title_all[i], href_all[i], content_all[i])
- data_all.append(temp)
-
- print(data_all)
- #采用字符串形式插入
- try:
- curs.executemany(sql_1, data_all)
- conn.commit()
- #出错时回滚
- except:
- conn.rollback()
- print(curs)
- curs.close()
- conn.close()
-
-
- title_all, href_all, content_all = [], [], []
- mysql_r_w(title_all, href_all, content_all)
在使用executemany的字符串方式插入值时,即 curs.executemany(sql_1, data_all)的第2个参数要求是元组或者是列表都可以,所以我们在插入之前需要将所有数据整合在一个列表或元组中然后将其一口气插入,OK,打完收工