python mysql多条插入
程序的目的是把文本里面的数据存储到数据库中,原来的思路是读一条,插入一条,结果就是时间长的不得了。。。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多条插入的更多相关文章
- python mysql 更新和插入数据无效
注意,在删除和增加后必须执行conn.commit()才有效,否则操作无效.
- python+mysql:实现一千万条数据插入数据库
作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...
- python MySQL 插入Elasticsearch
一.需求分析 注意: 本环境使用 elasticsearch 7.0版本开发,切勿低于此版本 mysql 表结构 有一张表,记录的数据特别的多,需要将7天前的记录,插入到Elasticsearch中, ...
- Python MySQL 插入表
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- mysql sql获取上条插入id,update影响行数
1.获取上条插入数据 LAST_INSERT_ID(); 2.获取update影响行数. ROW_COUNT(); mysql> UPDATE t -> SET address = 'be ...
- mysql一次插入多条数据
mysql一次插入多条数据: INSERT INTO hk_test(username, passwd) VALUES ('qmf2', 'qmf2'),('qmf3', 'qmf3'),('qmf4 ...
- MySQL使用INSERT插入多条记录
MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...
- mysql中迅速插入百万条测试数据的方法
对比一下,首先是用 mysql 的存储过程弄的: 复制代码代码如下: mysql>delimiter $ mysql>SET AUTOCOMMIT = 0$$ mysql> crea ...
- python多条插入问题
多条插入用excutemany(listtuple) #coding=utf-8 import MySQLdb import traceback sqlstr= "insert into t ...
随机推荐
- MyDatePicker拆分日期显示到不同TextBox
如图所示效果:年—月—日 时—分—秒 <tr> <td align="center" style="background- ...
- javascript 的加载方式
本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...
- English - in the light of(按照,根据)与according to的区别是什么
according to 表示as stated by 像陈述的那样 如According to Sarah they're not getting on very well at the momen ...
- matlab改变GUI和figure左上角图标的方法,并生成exe文件
1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加h = handles.figure1; %返回其句柄newIcon = javax.swing.Ima ...
- 七种Prolog解释器/编译器
http://blog.sina.com.cn/s/blog_494e45fe0100lh1v.html PROLOG 人工智能领域常用的语言,开发自然语言分析,专家系统,以及所有和智能有关的程序,都 ...
- SET QUOTED_IDENTIFIER (Transact-SQL)
使 SQL Server 遵从关于引号分隔标识符和文字字符串的 ISO 规则. 由双引号分隔的标识符可以是 Transact-SQL 保留关键字,也可以包含 Transact-SQL 标识符语法约定通 ...
- 将窗口置顶的方法:SetWindowPos、AttachThreadInput、SwitchToThisWindow
将窗口置顶的方法:SetWindowPos.AttachThreadInput.SwitchToThisWindow [转]http://hi.baidu.com/neil_danky/item/f9 ...
- The type javax.servlet.http.HttpServletRequest cannot be resolved.
The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from ...
- input 属性
1.readonly="readonly" 用来表示 input只能读写.
- Asp MVC 中处理JSON 日期类型
注:时间有点忙,直接copy 过来的,要查看原址: http://www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html I ...