[英]Script is taking too long
所以這是我的腳本:
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分鍾才能完成。
我已經讀過它,並且我知道我可能應該使用事務,但是我真的不知道該怎么做。
誰能在我的代碼中為我舉例說明如何使用事務來完成所有事務?
太好了,謝謝。
請參test_alchemy_core
答案中的test_alchemy_core
函數: 為什么用sqlite插入SQLAlchemy的速度比直接使用sqlite3慢25倍? 它顯示了如何在一批中執行多個插入。 您的問題是,您要一次又一次地執行插入操作,這總是很慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.