Python SQLite #9: методы execute, executemany, executescript, commit, rollback и свойство lastrowid

preview_player
Показать описание
Порядок взаимодействия с СУБД SQLite через API модуля sqlite3 на языке Python. Рассматриваются методы: execute, executemany, executescript, commit, rollback и свойство lastrowid.
Рекомендации по теме
Комментарии
Автор

качество и объяснения на высшем уровне

T_ugu_team
Автор

Спасибо!
Для обновления БД в программе не обязательно загружать его заново, достаточно нажать "F5"

AJIagguH
Автор

Еще раз скажу что Ваш канал это огромная кладезь знаний!!!🤌👌🙏спасибо за Ваш труд!

Laserball
Автор

Выражаю свою благодарность автору, чья подача материала просто шикарна! Спасибо.

ЖалынАматов
Автор

Уже несколько месяцев я пытаюсь понять что такое апи. Смотрел ролики разные, определение читал, а тут просто объяснили что это методы пакета. Я очень рад, что это не что-то сложное и непонятное)

ТихонКотов-дз
Автор

НАСТОЯЩИЙ МАСТЕР, БЛАГОДАРЮ ЗА ОТЛИЧНЕЙШИЙ МАТЕРИАЛ И ЕГО ПОДАЧУ !!!

denissavast
Автор

Спасибо за урок, очень доступно объясняете

Eifyrion
Автор

изучил базовый синтаксис, ООП, посмотрел курс по джанго, прохожу Git, досматриваю SQLite, ТАК и не сформировалось точное понимание что такое API (о котором слышно везде) это видео закинуло новый пазл

gtem
Автор

Божественный урок, но хотелось бы, чтобы вместе с материалом прикреплялись и исходники.

nuradiledilov
Автор

Хороший урок, спасибо! Скажите, а как быть если добавить нужно не одну запись, а скажем 1000 или 10000? Если формат json, csv или xml? И как в этом случае автоматически определить типы столбцов, не прописывая их в ручную?

Gusarov
Автор

почему comit мы использовали в блоке try а не в блоке finally? ведь в этом случае если было много операций с БД до возникновения ошибки, то все операции будут потеряны. Но если записать commit в блок finally, то все операции с БД перед ошибкой сохранятся.
ЗЫ: Не досмотрел немного до rollback: вопрос выше отпадает, но возникает другой: зачем делать rollback если мы не делаем комит? ведь изменения без комит всё равно не сохранятся, а в блоке файнали БД закроется без сохранения изменений.
ЗЫ: ЗЫ: Всё, досмотрел дальше. Все вопросы отпали.

ЗЫ: ЗЫ: ЗЫ: не, не отпали вопросы. Только что проверил, без ролбэк таблица все равно остается пустой при ошибке, так как комит не срабатывает при ошибке.

ЗЫ: ЗЫ: ЗЫ: ЗЫ: почитал как работает rollback и примерно понял зачем он тут используется. если база данных не будет закрыта, а ошибка просто про игнорируется, то при продолжении работы с таблицей может возникнуть путаница, какие данные уже внесли а какие еще нет. В этом случае, что бы не было путаницы делаем ролбэк до какой то точки, и затем продолжаем работать с этой точки. В данном видео это не актуально так как бд закрывается без комита и все изменения теряются.
Я не уверен что правильно разобрался, так что прошу поправить меня если я не прав.

Sergey-czym
Автор

Выглядит так, что в приведённом примере с rollback() использование этого метода избыточно. Из-за ошибки поток выполнения не дойдёт до коммита, результат транзакций в любом случае не сохранится и таблица останется пустой

ЙенФенФыр
Автор

Спасибо большое за урок, сложно но интересно очень.
Если можно, подскажите, почему при параметре BEGIN; после каждой строки SQL-запроса нужно указывать точку с запятой, а не запятую? Это особенности использования параметра BEGIN или какая-то другая особенность, которую я упустил?

ЕвгенийПоловинский-ву
Автор

А как сделать так что бы участника вносить в базу данных?, я просто делаю бд для бота в вк и не могу понять как сделать так что бы бот вносил человека в бд автоматически

magister
Автор

Подскажите, почему при повторном использовании execute, executemany вы пишите NULL для значения первого столбца

fantomdeni
Автор

Подскажите, пожалуйста. В менеджере контекста with методы commit и close выполняются автоматически, а если будет ошибка, то метод rollback тоже выполнится автоматически или нужно его отдельно прописывать в исключении?

Manu-eitn
Автор

@selfedu На 11:50 свойство lastrowid возвращает значение скрытого поля rowid, а не car_id из таблицы, они же не связаны никак. И это поле rowid особенность SQLite или у всех СУБД есть что-то подобное?

YbisZX
Автор

@selfedu Не совсем понятно, что делает commit. Ведь без него новые записи все равно сохраняются в БД. До этого в примерах так и работало. Или это для гарантии из-за буферизации?

YbisZX
Автор

Доброе время суток! Если использовать cur.executescript(), то cur.lastrowid возвращает None, подходит только с cur.execute()?

donfedor
Автор

Вопрос. if con: con.rollback() почему без отступа?

КостяГорохов-бс