LINUX.ORG.RU

python2 -3 разное поведение скрипта на вставку sqlite


0

2

Скрипт парсит огромный xml файлик в случае python3 отжирает всю свободную память python2 нормально парсит. Где грабли?

примерный код:

class XmlHandler(handler.ContentHandler):
    def __init__(self):
        self._data = {}
        self.check = check_status

    def startElement(self, name, attrs):
        self._data = attrs

    def endElement(self, name):
        if name == "Blablabla":
            #воткнуть pass не отжирает
            self.db_connection.вставка_в_другом_модуле(self._data)
   def endDocument(self):
        self.db_connection.commit()

Вставка:
        columns = ', '.join(list(_data.keys()))
        values = list(_data.values())
        placeholdrs = ",".join("?" * len(_data))
        sql = "INSERT INTO " + some_tb_namee + \
            " ( {} ) VALUES ( {} )".format(columns, placeholdrs)

        try:
            self.c.execute(sql, values)
        except sqlite3.Error as msg:
            print(msg.args)
            exit(0)


★★★★

не в sqlite дело, даже с пустым handler.ContentHandler python3.2 отжирает всю память, на python3.3 не воспроизводится

deity ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.