Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
18.09.2020, 01:58
|
|||
---|---|---|---|
|
|||
Python sqlite3 проблема с UPDATE |
|||
#18+
Всем доброго времени суток! Пишу скрипт на питоне, который читает данные из блокнота, обрабатывает их через регулярные выражения и записывает в таблицу резидентной БД, которая создаётся с помощью библиотеки sqlite3. Таблица содержит поля с названиями городов и краткой информацией о них, у каждого города есть поле id. Создание БД и запись в поля проходят как надо. Далее мне нужно перевести названия городов с транслита на русский, для чего я в цикле беру у каждой записи название города и его айди. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Описанный до апдейта код отрабатывает как мне нужно, цикл проходит до конца по всем записям в таблице, но стоит мне вызвать апдейт, и после коммита происходит выход из цикла, то есть обновляется только поле первой записи, остальные остаются без изменений, что подтверждается вызовом после этого участка кода селекта. chars и sets это словари с наборами символов для преобразования транслита, все ключи и их значения строкового типа. В чём может быть проблема? Таблицу заполнял тоже через цикл, а апдейт почему-то с циклом не хочет работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.09.2020, 07:19
|
|||
---|---|---|---|
Python sqlite3 проблема с UPDATE |
|||
#18+
Сохрани все UPDATE в массив и по окончанию цикла выполни еще одним циклом. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.09.2020, 13:37
|
|||
---|---|---|---|
|
|||
Python sqlite3 проблема с UPDATE |
|||
#18+
Объявил в глобальной области видимости пустой список names, из цикла убрал апдейт и на каждой итерации добавлял к names кортеж res. После цикла вызвал апдейт через executemany, всё заработало как надо. Но всё ещё непонятно, почему исходный вариант кода не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.09.2020, 13:46
|
|||
---|---|---|---|
Python sqlite3 проблема с UPDATE |
|||
#18+
Как я понимаю cur.execute("SELECT ...") принимает записи по одной и обрабатывает, очередной вызов cur.execute() сбрасывает незаконченный предыдущий. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
23.09.2020, 17:57
|
|||
---|---|---|---|
|
|||
Python sqlite3 проблема с UPDATE |
|||
#18+
Смысл я уловил, большое спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
09.10.2020, 17:58
|
|||
---|---|---|---|
|
|||
Python sqlite3 проблема с UPDATE |
|||
#18+
Zmeeed, угу, можно из того же соединения получить ещё один курсор и апдейт делать через него. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.01.2021, 20:11
|
|||
---|---|---|---|
|
|||
Python sqlite3 проблема с UPDATE |
|||
#18+
Серега Г Zmeeed, угу, можно из того же соединения получить ещё один курсор и апдейт делать через него. но если Update() выполнять через транзакцию, то бд будет блокироваться (в пределах Begin()..Commit()) и в этот момент считывать с 1го курсора не получится... - он будет возвращать пустоты, если пытаться его в этот момент Fetch() ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
Start [/forum/topic.php?fid=54&tablet=1&tid=2008341]: |
0ms |
get settings: |
27ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
287ms |
get tp. blocked users: |
2ms |
others: | 312ms |
total: | 742ms |
0 / 0 |