config = {
\'host\': \'localhost\',
\'port\': 3306,
\'database\': \'test\',
\'user\': \'root\',
\'password\': \'1234qwer\',
\'charset\': \'utf8\'
}
conn = pymysql.connect(**config)
cur = conn.cursor()
def timer(fn):
def _wrapper(count):
start = time.time()
fn(count)
seconds = time.time() - start
print(u"{func}函数每 {count} 条数数据写入耗时 {sec}秒".format(func=fn, count=count, sec=seconds))
return _wrapper
# 普通写入
@timer
def ordinary_insert(count):
sql = "insert into students1 (name, age, sex,id,cellphone,address,score) values (\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\')"
for i in range(count):
cur.execute(sql)
# 批量处理
@timer
def many_insert(count):
sql = "insert into students1 (name, age, sex,id,cellphone,address,score)values(%s,%s,%s,%s,%s,%s,%s)"
loop = count / 20
stus = ((\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'),
(\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\'),(\'tom666\',\'66\',\'boy\',\'10066\',\'13900000066\',\'shanghai\',\'66\'))
for i in range(int(loop)):
cur.executemany(sql, stus)
# 事务处理
@timer
def transaction_insert(count):
sql = "insert into students1 (name, age, sex,id,cellphone,address,score)values(%s,%s,%s,%s,%s,%s,%s)"
stus = (\'tom666\', \'66\', \'boy\', \'10066\', \'13900000066\', \'shanghai\', \'66\')
if count > 0:
try:
for i in range(count):
cur.execute(sql, stus)
except Exception as e:
conn.rollback() # 事务回滚
print(\'事务处理失败\', e)
else:
conn.commit() # 事务提交
print(\'事务处理成功, 关闭连接\', cur.rowcount)
cur.close()
conn.close()
else:
print("输入的count有问题,无法执行数据库操作!")
def test_insert(count):
ordinary_insert(count)
many_insert(count)
transaction_insert(count)
test_insert(20)