方案1:使用executemany一次+commit一次方案2:使用execute10000次+commit一次方案3:使用(execute+commit)10000次生成假数据fake:Faker=Faker(locale='zh_CN')start=time.time()tables=[]foriinrange(10000):row=(fake.name(),fake.text())tables.append(row)#print(row)end=time.time()print(f'数据生成完成!支付时间为{end-start}s')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')Plan1print('StartPlan1...')withconnection:#Createdatatablewithconnection.cursor()ascursor:cursor:Cursorsql="""如果不存在则创建表`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#使用connection.cursor()ascursor:cursor:Cursor插入数据sql='insertintotweet(`username`,`content`)values(%s,%s)'cursor.executemany(sql,tables)connection.commit()end=time.time()print(f'方案一:插入数据完成!paytimeis{end-start}s')#删除数据表withconnection.cursor()ascursor:cursor:Cursorsql='droptabletweet;'cursor.execute(sql)Scheme2print('开始计划二...')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')withconnection:#Createdatatablewithconnection.cursor()ascursor:cursor:Cursorsql="""如果不存在则创建表`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#insertdatawithconnection.cursor()作为光标:cursor:Cursorforrowintables:sql='insertintotweet(`username`,`content`)values(%s,%s)'cursor.execute(sql,row)connection.commit()end=time.time()print(f'Scheme2:Insertdatacompleted!paytimeis{end-start}s')#删除数据表withconnection.cursor()ascursor:cursor:Cursorsql='droptabletweet;'光标。execute(sql)方案三print('启动方案三...')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')withconnection:#Createdatatablewithconnection.cursor()ascursor:cursor:Cursorsql="""createtableifnotexists`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#insertdatawithconnection.cursor()ascursor:cursor:Cursorforrowintables:sql='insertintotweet(`username`,`content`)values(%s,%s)'cursor.execute(sql,row)复制代码联系。commit()end=time.time()print(f'Scheme3:Datainsertioniscomplete!paytimeis{end-start}s')#删除数据表withconnection.cursor()ascursor:cursor:Cursorsql='删除表推文;'cursor.execute(sql)运行结果生成数据完成!支付时间为1.2480072975158691s开始计划一……计划一:插入数据完成!支付时间为2.1816399097442627s启动方案二……方案二:插入数据完成!支付时间为27.0793399810791s启动方案三...方案三:插入数据完成!paytimeis247.8990249633789s可以看到速度:Plan1>Plan2>Plan3time.time()tables=[]foriinrange(10000):row=(fake.name(),fake.text())tables.append(row)#print(row)end=time.time()print(f'数据生成完成!支付时间为{end-start}s')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')print('Startplanone...')withconnection:#创建数据表withconnection.cursor()ascursor:cursor:Cursorsql="""createtableifnot存在`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#Insertdatawithconnection.cursor()ascursor:cursor:Cursorsql='insertintotweet(`username`,`content`)values(%s,%s)'cursor.executemany(sql,tables)connection.commit()end=time.time()print(f'方案一:数据插入完成!支付时间为{end-start}s')#删除数据表withconnection.cursor()作为游标:游标:游标sql='删除表推文;'cursor.execute(sql)#----------------------------------------------------------------print('开始方法二......')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')withconnection:#创建数据表withconnection.cursor()ascursor:cursor:Cursorsql="""如果不存在则创建表`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#插入数据withconnection.cursor()ascursor:cursor:Cursorforrowintables:sql='insertintotweet(`username`,`content`)values(%s,%s)'cursor.execute(sql,row)connection.commit()end=time.time()print(f'方案二:插入数据完成成!paytimeis{end-start}s')#删除数据表withconnection.cursor()ascursor:cursor:Cursorsql='droptabletweet;'cursor.execute(sql)#----------------------------------------------------------------print('开始方案三......')connection:Connection=pymysql.connect(user='root',password='yourpassword',host='192.168.31.203',port=3306,database='test_001')withconnection:#创建数据表withconnection.cursor()ascursor:cursor:Cursorsql="""如果不存在则创建表`tweet`(`id`bigintNOTNULLAUTO_INCREMENT,`username`varchar(255)NOTNULL,`content`varchar(255)NOTNULL,PRIMARYKEY(`id`))"""cursor.execute(sql)start=time.time()#插入数据withconnection.cursor()ascursor:cursor:Cursorforrowintables:sql='insertintotweet(`username`,`content`)values(%小号,%小号)'cursor.execute(sql,row)connection.commit()end=time.time()print(f'方案3:数据插入完成!支付时间为{end-start}s')#删除数据表with联系。cursor()ascursor:游标:Cursorsql='droptabletweet;'光标。执行(sql)
