程序的目的是把文本里面的数据存储到数据库中,原来的思路是读一条,插入一条,结果就是时间长的不得了。。。18万条的数据,真是慢。

后来的想法是把所有的记录都读到一个list里,结果是mysql奔溃go away,毕竟18万条,太多了。

再后来的想法就是满1000条进行一次插入,O(∩_∩)O哈哈~,效果不错,mysql没崩溃,效率提高了好几个量级。

import MySQLdb
import codecs def FileToDatabase(file):
conn = MySQLdb.connect(host='yourhost',user='username',passwd='yourpwd',db='yourdb')
curs = conn.cursor()
fp = codecs.open(file,'r','gb2312')#文本编码是gb2312,所以以此方式打开
i = 0
L = []
for eachline in fp:
i = i + 1
list = newline.split(',')
L.append(list)
if i % 1000 == 0:#满1000插入数据库
#try:executemany好像不能使用字符串变量如executemany(sql),如此导致插入失败,还有就是插入整型的时候也不能使用%d,而是%s...
       #当插入的字段并非table的全部字段时,要指定插入的字段及顺序与value内的值一致
curs.executemany("insert into season1(word1,word2,word3,word4) values(%s,%s,%s,%s)",L)
conn.commit()#没有提交的话,无法完成插入
L = []
#except:
conn.rollback()
print 'No.:'+str(i)
#print newline
fp.close()
#try:#将剩余插入数据库
curs.executemany("insert into season1(word1,word2,word3,word4) values(%s,%s,%s,%s)",L)
conn.commit()
#except:
conn.rollback()
conn.close()

对于数据库的rollback还是不太理解,以后有机会再深入了解吧

python mysql多条插入的更多相关文章

  1. python mysql 更新和插入数据无效

    注意,在删除和增加后必须执行conn.commit()才有效,否则操作无效.

  2. python+mysql:实现一千万条数据插入数据库

    作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

  3. python MySQL 插入Elasticsearch

    一.需求分析 注意: 本环境使用 elasticsearch 7.0版本开发,切勿低于此版本 mysql 表结构 有一张表,记录的数据特别的多,需要将7天前的记录,插入到Elasticsearch中, ...

  4. Python MySQL 插入表

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  5. mysql sql获取上条插入id,update影响行数

    1.获取上条插入数据 LAST_INSERT_ID(); 2.获取update影响行数. ROW_COUNT(); mysql> UPDATE t -> SET address = 'be ...

  6. mysql一次插入多条数据

    mysql一次插入多条数据: INSERT INTO hk_test(username, passwd) VALUES ('qmf2', 'qmf2'),('qmf3', 'qmf3'),('qmf4 ...

  7. MySQL使用INSERT插入多条记录

    MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...

  8. mysql中迅速插入百万条测试数据的方法

    对比一下,首先是用 mysql 的存储过程弄的: 复制代码代码如下: mysql>delimiter $ mysql>SET AUTOCOMMIT = 0$$ mysql> crea ...

  9. python多条插入问题

    多条插入用excutemany(listtuple) #coding=utf-8 import MySQLdb import traceback sqlstr= "insert into t ...

随机推荐

  1. 如何判断是否按下Ctrl键 - C#

    可根据Control.ModifierKeys来判断用户是否按下了组合键. if ((Control.ModifierKeys & Keys.Control) == Keys.Control) ...

  2. System.Data.SQLite兼容32位和64位问题

    SQLite版本分的很详细,本机是64位在32位会出现问题,经过搜索找到解决方案. 这是我以前写的32位在我现在的机子上的运行报错. 类似这样的. 将当前说明文档的目录下的x64.x86目录和Syst ...

  3. visio 2013 破解工具 - KMSpico

    背景:环境是 win7, 64 bit装了 visio 2013 , 可以却不能用它来画图,在网上找了一些破解工具,大都不能解决问题.网上不靠谱的广告型文章太多了,比较头痛. 所幸,终于找到正确的破解 ...

  4. BHO启动IE调试

    如下图选择Web Browser Debugger, 输入启动网址

  5. 5.7.1.4 window对象

    ECMAScript虽然没有指出如何直接访问Global对象,但web浏览器都是将这个全局对象作为window对象的一部分加以实现的.因此,在全局作用域中声明的所有变量和函数,就都成为了window对 ...

  6. eclipse run on server 浏览器启动设置

  7. K-Modes算法[聚类算法]

    聚类算法k-Modes的实现 <?php /* *Kmodes算法(聚类算法的实现) */ /* *获取簇的数目 */ //----------------------------------- ...

  8. ThinkPHP中的CURD操作

    <?php //查询多条记录,返回二维数组 $result = M("admin")->select(); $result = M("admin") ...

  9. spring util命名空间

    在spring的配置文件中util命名空间类似于java.util包类对应,util命名空间提供了集合相关的配置,在使用命名空间前要导入util命名空间,如下: util命名空间引入 <bean ...

  10. delphi如何获得当前操作系统语言环境

    function GetWindowsLanguage: string; var WinLanguage: ..] of char; begin VerLanguageName(GetSystemDe ...