0
我正在使用以下代碼插入超過1M的條目在一個SQL表中(ItemOrderType位是因爲我認爲我從其他來源寫入條目時發生錯誤使用的SQLAlchemy的DECL枚舉食譜...)SQLAlchemy - 插入> 1M行 - 進程死亡
def run_import():
with open('listings.csv', 'r') as csv_file:
reader = csv.reader(csv_file, delimiter=";")
inserts = []
for row in reader:
inserts.append({'item_id': int(row[0]),
'order_type': ItemOrderType.from_string(row[1].replace('<','').replace('>','')),
'listings': int(row[2]),
'unit_price': int(row[3]),
'quantity': int(row[4])})
if len(inserts) == 10000:
db.engine.execute(ItemOrder.__table__.insert(), inserts)
inserts = []
db.engine.execute(ItemOrder.__table__.insert(), inserts)
無論哪種方式,而不LEN(插入)絕招,刀片甚至不會發生,過程只是返回消息「封殺」。有了它,我在死亡前獲得了大約750,000條記錄。
當監控最高級別的進程時,我發現VIRT內存在死亡前上升到1200米左右,res停留在230米左右。
這是sqlalchemy泄漏嗎?我會假設在引擎執行插入之後,所使用的所有內存都是釋放的?這個是我在Archlinux上使用的Python版本: Python 2.7.6(默認,2014年5月26日,10:25:14) [GCC 4.4.7 20120313(Red Hat 4.4.7-4) ] on linux2
在此先感謝!