Rodegast
Индекс сделал?
Нет, на тот момент не делал - сейчас этим вопросом озадачился
4kpt_III
1. Не увидел здесь алхимию хотя смотрел в оба глаза.
2. Почему-бы перед тем, как обновить не проверить: а изменилось ли вообще поле?
3. Ну и индескы. Хотя об этом уже сказали. И не раз.
4. Sqlite хорош для малого хранения данных. Для чего-то сложнее нужно выбирать между PostgreSQL и Mongo (зависит от структуры данных). Учитывая Ваши данные предпочтительнее PostgreSQL.
она была до sqlite3
Т.е. вместо куска
try: # обработка исключения
cur.executescript(sql) # Выполняем SQL-запрос
sql = ''
except sqlite.DatabaseError, err:
print u"Ошибка:", err
была строчка вида
try: # обработка исключения
session.query(Info).filter_by(name="%s" % value).update({'text1': text1})
except:
print u"Ошибка:"
Особой разницы в скорости не заметил.
PooH
Ужас какой! Тут не весь код, но если я правильно понимаю, вы собираете в текстовой переменной текст 1000 sql-запросов и кормите этим базу? Собирайте данные в списке кортежей, а потом запускайте c executemany и биндингом параметров
Именно так я и делаю, как это не было прискорбно (про 1к UPDATE).
Второе предложение не понял - пошел гуглить инфу что это и с чем едят
FishHook
А какие данные у вас в файле? Точно их нельзя вычислить и базу одним запросом проапдейтить?
Ну у меня есть данные (грубо говоря):
name|text1|date1
их 10к штук
в базе инфа храниться в виде.
id|name|date1|date2|date3|text1|text2|text3|integer
по name нужно проапдейтить бд. Я не знаю как можно 1-м запросом это сделать. По крайней мере пока.
PS Для того что бы понять необходимость обновления нужно получить эти данные. И тут тоже стоит вопрос, как это сделать. Адскую конструкцию типа
Select (name,text1,date1) from table where name = ‘value1’ or name = ‘value2’ or … name = ‘value10000’
Но это кажется совсем не красивой конструкцией.
PPS Про индексы можете пока не говорить - вопрос изучаю)))) Как использую - расскажу о результатах