python 测试mysql数据库_python写MySQL数据库测试

本来很自信的觉得可以直接写到数据库。没想到遇到了些问题。(还是需要虚心学习啊)

# -*- coding: utf-8 -*-

import MySQLdb

def wdb():

#数据库操作

conn= MySQLdb.connect(

host='localhost',

port = 3306,

user='root',

passwd='1234'

)

conn.select_db('zzu')

cur = conn.cursor()

cur.execute("SET NAMES utf8")

#测试文本2万行

fp = open("file.txt",'r')

for line in fp.xreadlines():

ls = line.strip().split('----')

try:

cur.execute("INSERT INTO dbname VALUES ('"+ls[0]+"','"+ls[1]+"')")

conn.commit()

except:

conn.rollback() # 发生错误时回滚

cur.close()

conn.close()

if __name__ == '__main__':

wdb()

本以为很快就执行完了呢?万万没想到竟然出奇的慢,而且要命的是就插入了2102行,这个问题搁置了两天,我现在才来解决!

经过调试发现:

执行慢的原因是因为for循环下的*conn.commit()语句,不用每插入一句就提交,最后提交一次就行,所以把conn.commit()*语句放在循环外面就行了。

插入很少的原因是因为当插入异常时我执行回滚的操作,其实我没必要做事务操作,所以删去*conn.rollback()*语句就行了。

修改后的程序执行2万行也就是2-3秒!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值