Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / python и sqlite / 4 сообщений из 4, страница 1 из 1
06.06.2018, 15:23
    #39656592
MaratD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
python и sqlite
Здравствуйте.
Если в запросе на изменение данных (вставка, обновление записей) в базе использовать конструкцию
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
try:
    c = conn.cursor()
    c.execute('BEGIN EXCLUSIVE TRANSACTION')
    c.execute('UPDATE ...') 
    c.execute('INSERT ...')
    c.execute('COMMIT TRANSACTION')
except:
    c.execute('ROLLBACK TRANSACTION')


то нужно ли в самих командах вставки и обновления использовать алгоритм “OR ROLLBACK”. То есть так
Код: python
1.
2.
    c.execute('UPDATE OR ROLLBACK ...') 
    c.execute('INSERT OR ROLLBACK ...')


При возникновении ошибки изменение не сохранится?
Помогите пожалуйста. Спасибо.
...
Рейтинг: 0 / 0
07.06.2018, 20:21
    #39657908
PPA
PPA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
python и sqlite
MaratD,

думаю не нужно (транзакция должна быть атомарной)
также можно сократить команды ROLLBACK и COMMIT до одного слова.
...
Рейтинг: 0 / 0
07.06.2018, 21:27
    #39657928
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
python и sqlite
MaratD,

Зависит от того что тебе нужно.

В первом примере (с ловлей исключения), у тебя может произойти исключение в любом месте, не обязательно внутри execute(), но и в любой питоньей команде между обращениями к базе.

А в во втором примере откат будет происходить только при ошибке вставки/обновления. Но ошибки питоньего скрипта на базе не отразятся.

Оба подхода вполне нормальны, но у них разные области.
...
Рейтинг: 0 / 0
12.06.2018, 11:17
    #39659634
MaratD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
python и sqlite
Получается в первом случае (с исключениями) не обязательно внутри execute() использовать ROLLBACK. И если произойдет ошибка вставки/обновления, то откат обязательно произойдет?
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / python и sqlite / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]