#python #sqlite #производительность
Имеется следующий кусок кода, который берет данные из базы-данных SQLite, затем загружает их (в виде текста) в клиентское приложение, но к сожалению загрузка данных работает очень уж долго, как сделать быстрее? results = c.execute(select).fetchall() stroka = '' for line in results: stroka = stroka + str(line) + '\n' self.ui.textEdit.setText(stroka)
Ответы
Ответ 1
Предлагаю оптимизировать составление текста через замену конкантенации строк на join: text = '\n'.join([str(line) for line in results]) или так: text = '\n'.join(map(str, results))Ответ 2
Можно сделать это на стороне SQLite. Пример: sqlite> select * from tab; s ---------- 111 222 333 sqlite> select group_concat(s,'') from tab; group_concat(s,'') ------------------ 111222333 sqlite> select group_concat(s,'\n') from tab; group_concat(s,'\n') -------------------- 111\n222\n333 в следующем варианте возвращается одна строка: sqlite> select group_concat(s,char(10)) from tab; group_concat(s,char(10)) ------------------------ 111 222 333 Спасибо @jfs за код для Python: [[result]] = db.execute("select group_concat(s, '\n') from tab") PS данный вариант имеет O(n) по времени выполнения
Комментариев нет:
Отправить комментарий