2013-11-14 150 views
0

所以这里是我的脚本:脚本的时间太长

import glob,os, csv  
from sqlalchemy import * 
count = 0 
served_imsi = [] 
served_imei = [] 
served_msisdn = [] 
location_area_code = [] 
routing_area = [] 
cell_identity = [] 
service_area_code = [] 
s_charging_characteristics = [] 
plmn_id = [] 

path = '/home/cneps/cdr/*.cdr' 
for file in glob.glob(path): 
    f = open(file) 
    for lines in f: 
     served_imsi.append(lines[17:17+16]) 
     served_imei.append(lines[47:47+16]) 
     served_msisdn.append(lines[65:65+18]) 
     sgsn_address.append(lines[83:83+32]) 
     ggsn_address.append(lines[115:115+32]) 
     charging_id.append(lines[147:147+10])  
     apn_network.append(lines[157:157+63]) 
     location_area_code.append(lines[296:296+4]) 
     routing_area.append(lines[300:300+2]) 
     cell_identity.append(lines[302:302+4]) 
     service_area_code.append(lines[306:306+4]) 
     s_charging_characteristics.append(lines[325:325+2]) 
     plmn_id.append(lines[327:327+6]) 

db = create_engine('sqlite:///TIM_CDR.db',echo=True) 
metadata = MetaData(db) 
CDR1 = Table('CDR1', metadata, autoload=False) 
i = CDR1.insert() 

while count < len(served_imei): 

    i.execute(Served_IMSI=served_imsi[count], Served_IMEI=served_imei[count], Served_MSISDN=served_msisdn[count], SGSN_Address=sgsn_address[count], GGSN_Address=ggsn_address[count], Charging_ID=charging_id[count], APN_Network=apn_network[count], LAC=location_area_code[count], RAC=routing_area[count], Cell_Identity=cell_identity[count], Service_Area_Code=service_area_code[count], S_Charging_Characteristics=s_charging_characteristics[count], PLMN_ID=plmn_id[count]) 
    count += 1 

正是由于采取了很多来完成,因为这些数据我插入我的数据库就像是10万线。

需要30分钟才能完成。

我已经读过它了,我知道我可能应该使用交易,但我不知道该怎么做。

任何人都可以在我的代码中为我做一个例子如何使用事务提交后的一切?

这将是伟大的,谢谢。

+0

http://stackoverflow.com/questions/5942402/python-csv-to-sqlite/7137270#7137270 –

+0

我工作你的whitespacing和格式化权。请修改此以确保我的编辑是准确的。 – jwarner112

+0

尝试直接使用dbapi,而不使用sqlalchemy。另外,dbapi自动执行事务。无论如何,这不会真正帮助速度问题。 – Keith

回答