说明
pymysql中游标对象,execute可以执行一次sql语句
如果我们一次需要执行多次sql语句
可以用新的方法批量操作
executemany方法
cursor.executemany(""" insert into aaa(字段1, 字段n) values(占位1,占位n)""", [(数据1,数据n),(数据1,数据n)])
说明,executemany方法的第二个参数是一个列表,每一个成员都是一个元组。
元组中的数据,会按照位置对应关系替代到占位1与占位2中
》试验代码
import pymysql
conn = pymysql.connect(
host = "127.0.0.1",
port=3306,
user='root',
password='root',
database='pytest3',
charset='utf8'
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# res = cursor.execute(""" select * from aaa ;""")
li = []
for i in range(20,30):
li.append((i,"学生%s" %i))
cursor.executemany(""" insert into aaa(id, name) values(%s,"%s")""", li)
conn.commit()
print('ok')
》效果
mysql> select * from aaa;
+----+----------+
| id | name |
+----+----------+
| 1 | 11 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 4 |
| 6 | 5 |
| 20 | '学生20' |
| 21 | '学生21' |
| 22 | '学生22' |
| 23 | '学生23' |
| 24 | '学生24' |
| 25 | '学生25' |
| 26 | '学生26' |
| 27 | '学生27' |
| 28 | '学生28' |
| 29 | '学生29' |
+----+----------+
16 rows in set (0.00 sec)