Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 5, 2012 14:18:15

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Обработка csv большого размера

lomach
что разницу в производительности вы не очень почувствуете при размере файла в 8к строк
Тут речь не о простом прочтении файла, а о том что его еще в базу нужно записать, и каждая строка - это новая запись.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import sqlite3
 
con = sqlite3.connect("speed_test.con")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS test(field INTEGER)")
NRECORDS = 1000
 
def populate_table(commit_each_time):
    begin = time.time()
    for i in range(NRECORDS):
        cur.execute("INSERT INTO TEST VALUES(?)", (i,))
        if commit_each_time:
            con.commit()
    con.commit()
    print "Elapsed: %.3f s" % (time.time()- begin)
 
populate_table(commit_each_time=False) # Elapsed: 0.099 s
populate_table(commit_each_time=True)  # Elapsed: 93.795 s
Получилось в 900 раз медленнее (если PRAGMA synchronous = 0; не использовать). На серверной базе, postgresql например, где-то в 4-5 раз медленнее.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version