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

Поделиться
HTML-код
  • Опубликовано: 22 авг 2024
  • Инфо-сайт: proproprogs.ru
    Порядок взаимодействия с СУБД SQLite через API модуля sqlite3 на языке Python. Рассматриваются методы: execute, executemany, executescript, commit, rollback и свойство lastrowid.

Комментарии • 51

  • @AJIagguH
    @AJIagguH 3 года назад +19

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

  • @Laserball74
    @Laserball74 Год назад +8

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

  • @T_ugu_team
    @T_ugu_team 4 месяца назад +3

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

  • @Lucerbius
    @Lucerbius 4 месяца назад +2

    Качественные уроки.

  • @user-ro7be1bd4q
    @user-ro7be1bd4q 2 года назад +4

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

  • @martin1968ist
    @martin1968ist 10 месяцев назад +2

    Спасибо за качественную работу

  • @user-zy6bg9qx2o
    @user-zy6bg9qx2o Год назад +2

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

    • @Bkmz58
      @Bkmz58 Год назад

      API - описание способов взаимодействия одной компьютерной программы с другими. Это только в данном частном случае - методы пакета.

  • @Eifyrion
    @Eifyrion 4 года назад +2

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

  • @denissavast
    @denissavast 2 года назад +1

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

  • @donfedor007
    @donfedor007 3 года назад +2

    Спасибо за Ваши уроки!

  • @Developer_python_
    @Developer_python_ Год назад +1

    смотрю как и весь контент топ Сергея)

  • @nadyamoscow2461
    @nadyamoscow2461 3 года назад +1

    Отличный урок, большое спасибо.

  • @mikk152
    @mikk152 3 года назад +1

    Лайк, коммент в поддержку канала!

  • @alex_satan
    @alex_satan 2 года назад +1

    Отличный курс)

  • @efloop6335
    @efloop6335 5 месяцев назад +1

    🔥🔥🔥🔥

  • @Sergey-cz7ym
    @Sergey-cz7ym 2 года назад +6

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

  • @nuradiledilov784
    @nuradiledilov784 4 года назад +2

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

    • @selfedu_rus
      @selfedu_rus  4 года назад +4

      Спасибо, теперь делаю с исходниками, а здесь да, их нет. Как вариант можно посетить сайт proproprogs.ru там излагаются те же самые занятия и можно копировать некоторые тексты программ.

  • @g0tem449
    @g0tem449 Год назад +2

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

  • @sergioss9378
    @sergioss9378 2 года назад +1

    Спасибо!

  • @user-pz9ju6ss7r
    @user-pz9ju6ss7r 2 года назад +1

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

  • @Gusarov84
    @Gusarov84 2 года назад +2

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

  • @user-rw2ig6nb5l
    @user-rw2ig6nb5l 3 года назад +3

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

    • @selfedu_rus
      @selfedu_rus  3 года назад

      Мы там указываем группу команд, поэтому каждая команда разделяется точкой с запятой - общепринятный синтаксис )

    • @user-rw2ig6nb5l
      @user-rw2ig6nb5l 3 года назад

      @@selfedu_rusСпасибо.

    • @donfedor007
      @donfedor007 3 года назад

      Если ставить "," то sqlite3.OperationalError: near ",": syntax error, и запятой обычно перечесляют параметры запроса, а не сам запрос

  • @magister3316
    @magister3316 3 года назад +2

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

  • @Manu-ei6tn
    @Manu-ei6tn 2 года назад +1

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

    • @Sergey-cz7ym
      @Sergey-cz7ym 2 года назад +1

      насколько я понял try мы используем как раз для того что была возможность использовать rollback

  • @donfedor007
    @donfedor007 3 года назад +1

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

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      Да, обычно используется cur.execute(), чтобы, затем, использовать id для дальнейших манипуляций.

    • @donfedor007
      @donfedor007 3 года назад

      @@selfedu_rus спасибо

  • @iyi_jygal9151
    @iyi_jygal9151 3 месяца назад +1

    Чем же вас обидела Шкода?🤣🤣🤣

  • @fantomdeni95
    @fantomdeni95 Год назад

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

  • @YbisZX
    @YbisZX 3 года назад

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

    • @selfedu_rus
      @selfedu_rus  3 года назад +2

      После вызова commit() откатиться назад rollback() уже не получится, мы здесь управляем состоянием БД при изменении данных. Текст видео здесь: proproprogs.ru/modules/metody-execute-executemany-executescript-commit-rollback

  • @YbisZX
    @YbisZX 3 года назад

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

    • @selfedu_rus
      @selfedu_rus  3 года назад +1

      rowid - это синоним primary key и принимает то же значение, что и car_id. Подробнее здесь www.sqlite.org/rowidtable.html. И да, это особенность SQLite, в других БД этого может и не быть, например в MySQL поля rowid нет.

  • @user-rl7dv8qn7z
    @user-rl7dv8qn7z 2 года назад +1

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

    • @selfedu_rus
      @selfedu_rus  2 года назад

      можно и так, но лучше с отступом

    • @user-rl7dv8qn7z
      @user-rl7dv8qn7z 2 года назад

      @@selfedu_rus , спасибо!

  • @MrPavlik30
    @MrPavlik30 2 года назад

    подставил свой список и получил следующую ошибку sqlite3.ProgrammingError: Incorrect number of bindings supplied.
    в чем может быть причина?

    • @MrPavlik30
      @MrPavlik30 2 года назад +1

      вопрос снимается - указал не ту переменную