GUI приложения на Python c Tkinter #7 - Удаление данных из таблицы базы SQLite 3

Поділитися
Вставка
  • Опубліковано 6 лип 2019
  • Седьмое видео из серии о создании GUI приложения на Python с Tkinter. В этом видео Мы научимся удалять ранее добавленные записи в базу данных SQLite 3. Познакомимся с SQL запросом: DELETE.
    Иконка "Добавить позицию" - drive.google.com/file/d/0B8k1...
    Иконка "Редактировать" - drive.google.com/file/d/1W0to...
    Иконка "Удалить" - drive.google.com/file/d/19IiP...
    Код с видео - gist.github.com/ithobbies/5ff...
    Группа в VK - ithobbies
    Телеграмм канал - t.me/ithobbies

КОМЕНТАРІ • 81

  • @masterchief7312
    @masterchief7312 4 роки тому +19

    Добрый день, я думаю будет полезно для других, что после создания 9 записей по id, 10 -я запись и последующие не будут удаляться, т.к. будет вылетать ошибка (sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.). Решением является дописать запятую (self.tree.set(select, '#1'),)) в запрос базу данных.

    • @Sensys93
      @Sensys93 4 роки тому +2

      круто спасибо за баг репорт)

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      Спасибо большое!

    • @user-pn7fz9wp3u
      @user-pn7fz9wp3u 2 роки тому

      Можете объяснить как запятая исправляет эту ошибку?

    • @user-ol7qt1qs3y
      @user-ol7qt1qs3y 2 роки тому

      спасибо !

    • @masterchief7312
      @masterchief7312 Рік тому

      Ошибка в том, что надо передавать кортеж или список, поэтому добавляем запятую.

  • @vilka_v_ass
    @vilka_v_ass 5 років тому +12

    ура! еще одно видео спустя 3 месяца. Допишем это приложение через полтора года.

  • @user-fy8sm8lh2o
    @user-fy8sm8lh2o 4 роки тому +3

    Слава Богу, наконец, нашёлся программист публикующий в русскоязычном интернете написание программ в графике. А то дальше пустого окна редко кто чего публикует. Продолжайте, Денис! Именно благодаря таких людей и развивается человеческое общество. Спасибо. С нетерпением жду новых полезных уроков и программ.

    • @ITHobbies
      @ITHobbies  4 роки тому

      И Вам огромное спасибо

  • @SaneK270k
    @SaneK270k 4 роки тому +4

    Спасибо большое за урок, очень полезно. Интересно было бы разобраться как на такой форме переключаться между несколькими таблицами))

  • @yarilo038
    @yarilo038 4 роки тому +1

    Спасибо за видео. Очень помог разобраться во всем этом. ОЧЕНЬ хорошо объясняешь, чуть ли не разжевываешь (или да ?))) ) В общем большая тебе благодарность и надеюсь порадуешь еще каким-нибудь познанием в этой области. Поддерживаю самый последний комментарий о том, что даже через несколько лет люди будут искать помощи. ТЫ , мне помог !

  • @user-fy8sm8lh2o
    @user-fy8sm8lh2o 4 роки тому +1

    Идея кошелька весьма интересная и практичная. Можно, к примеру сделать несколько разделов ("наличные", "карточки", "доллары")... А ещё (ВАЖНО!) вывести остаток средств. Лучше также, если вместо слов "Доход" и "Расход" будут выдаваться при доходе - положительные, а при расходе отрицательные числа - ещё лучше разного цвета.

  • @dstddanilscraptd6875
    @dstddanilscraptd6875 3 роки тому

    Такие видео нужны, продолжай!

    • @ITHobbies
      @ITHobbies  3 роки тому +1

      Уже готовлю

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      @@ITHobbies ждём) лайк подписка, колокольчик

  • @SHKIPPER989
    @SHKIPPER989 4 роки тому

    Хорошие видео)
    И подача)
    Как раз то что надо)

  • @user-wl2ro8nb6l
    @user-wl2ro8nb6l 4 роки тому

    Лайк, подписка, колокольчик. Жду следующей серии!
    Плюс к упомянутому в коментариях, есть проблемка при изменении размера столбцов в таблице, конкретно - правої граници слолбца СУММА. При разшерении столбец уходит за предели окна.

  • @Energizer-fo4qy
    @Energizer-fo4qy 5 років тому +8

    Доброго вечера, Денис!!! Все отлично!!! Вопрос: - как бы сделать подтверждение удаления, типа хотите удалить ДА НЕТ??? Ну и ждем следующего видео, про поиск по наименованию!!! ))) СПАСИБО)))

  • @user-xz7ke3fe2h
    @user-xz7ke3fe2h 4 роки тому

    Мину,с что еще с 5 видео шла ошибка небольшая и ты ее исправил лишь в конце 6 урока доходы и расходы не совпадали со столбцом ка и сумма , плохо что нет или убрал дату хотя в первых видео она есть.. Твои уроки без понтов и я думаю многим помогли и помогают не останавливайся!!!!! У тебя хорошо получается! Конечно получалось бы лучше если бы была у тебя команда....ты бы смог гораздо больше.

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      над такими лёгкими проектами работают в одиночку. и да, он не заметил эту ошибку, надо ещё самому досматривать) ну главное - суть он объяснил неплохо

  • @nilmulyashov7274
    @nilmulyashov7274 4 роки тому +1

    Здравствуйте, спасибо большое за ваш труд! Недавно нашел эти видео - посмотрел залпом, лайк и подписка автоматом! Надеюсь, будут выходить чаще. Очень хочется узнать, как будет все это дело оборачиваться в экзешник и есть ли возможность поставлять в подобные десктопные приложения данные, получаемые с COM-порта (мучаюсь с Ардуино). Еще раз спасибо за видео)

  • @daniilmaibe
    @daniilmaibe 4 роки тому

    Видео и курс очень годные! Когда продолжение?

    • @daniilmaibe
      @daniilmaibe 4 роки тому

      Человек ниже сказал нужную вещь. Может в то время это и не было таким интересным, но со временем просмотры наберутся. У нас просто проектная работа на похожую тему, материал неизвестно откуда. А ваш курс очень помогает!

  • @alexxkogan248
    @alexxkogan248 4 роки тому +1

    Супер! очень доходчиво и понятно! Спасибо за уроки! Ждём новых уроков.
    И скажем как здесь сделать чтобы при введении данных у нас фокус стоял на кнопке EDIT или OK скажем, чтобы можно было сразу нажать Enter после введения данных.
    Ну и пожалуй ещё один интересный момент
    при редактировании сделать так чтобы поля оставленные пустыми не изменялись в самой базе

    • @alexxkogan248
      @alexxkogan248 4 роки тому +1

      Либо, редактирование записи по двойному щелчку, хотя предполагаю, что это может быть не доступно в sqlite 3(((

  • @user-xw1by8yo9e
    @user-xw1by8yo9e 4 роки тому

    может в следующем выпуске сделать подтверждение удаления и сортировку позиций по возрастанию и убыванию для удобства чтения?

  • @user-ie3zj8rw5r
    @user-ie3zj8rw5r 5 років тому +9

    2 минуса. Шутка =)
    1) Видео появляются редко
    2) Вы говорите "ИХНЕЕ"
    Теперь по сути.
    1) Как сделать редактирование и удаление через нажатие правой кнопки мыши?
    2) Как подтягивать данные в форму при редактировании?
    3) Как реализовать запрет на ввод не типовых данных?
    Прошу обратить внимание на то что запрет, а не проверку, тоесть чтобы не ставились цыфры в поле статья, а буквы в поле сумма

    • @user-cn2fp2ro9x
      @user-cn2fp2ro9x 4 роки тому +2

      могу помочь с подтягиванием данных, если ещё нужно

    • @user-wl2ro8nb6l
      @user-wl2ro8nb6l 4 роки тому

      @@user-cn2fp2ro9x Помогите, Мне тоже интересно!

    • @denisya.5654
      @denisya.5654 4 роки тому

      @@user-cn2fp2ro9x Помогите, пожалуйста.

  • @lagunaolder3748
    @lagunaolder3748 5 років тому

    Отличный материал! Подскажите, выбор Windows 10 для разработки приложений на Python дает какие-то преимущества? Или все же писать на Linux-подобных системах будет удобнее? Т.е. есть ли разница какую ОС использовать для разработки на Python? Так как большинство всегда ратует за Linux, но по факту ведь и IDE и встроенные пакеты и библиотеки в Python одинаковы на любой ОС из двух указанных и, соответственно, все что написано во всех ваших уроках равнозначно будет работать и на Linux'сах?

    • @ITHobbies
      @ITHobbies  4 роки тому

      Какую ОСь использовать дело предпочтений, python кроссплатформенный.

    • @lagunaolder3748
      @lagunaolder3748 4 роки тому

      @@ITHobbies все так. Но в Линукс Python идёт из коробки, так сказать, и вроде как там более проще с некоторыми библиотеками при установке и при установке доп. модулей. Или же на Windows, MacOS все также ставится без проблем? Сам пока в основном использую Python на win10, но мои коллеги "пугают" меня, мол "переходи сразу на Линукс, потом с питоном будет сложнее на винде тебе"

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      @@lagunaolder3748 очень зря пугают, все на винде ок(но конечно, за исключением некоторых проблем, очень редко встречающихся)

  • @olegmakarikhin
    @olegmakarikhin 4 роки тому +1

    спасибо.
    решил проверить смогу ли я сам, без создания диалогового окна . поставил видео в начале на паузу.
    за 3 минуты накопипастил и подправил имеющиеся методы и реализовал удаление без подтверждения. так, сейчас посмотрю проверю.

    • @ITHobbies
      @ITHobbies  4 роки тому

      Получилось?

    • @olegmakarikhin
      @olegmakarikhin 4 роки тому

      @@ITHobbies неверно цикл сделал, на одной записи ок, на нескольких падает.

  • @ilya_fimin
    @ilya_fimin 4 роки тому

    Подписался, лайк почтави3, жду видос

  • @n.3886
    @n.3886 Рік тому +1

    Привет из 2022)
    Если позволите, немного добавлю функционала.
    Если в метод удавления добавить строку:
    self.db.c.execute(“””DELETE FROM sqlite_sequence WHERE name = ‘тут название таблицы’”””)
    то можно избежать «бага» с ROWID, который возникает из за автоинкремента, который, при удалении элемента, добавляет к следующему созданному ID ужаленного. (Был 12 id, его удалили, создали новый, а он, зараза, вместо 12 стал 13. Вот от этой занозы можно избавиться одной строкой😉)

    • @ITHobbies
      @ITHobbies  Рік тому

      Круто 👍

    • @zadovrus6719
      @zadovrus6719 Рік тому

      Расскажите подробнее (привет из 2023) эту строку добавлять вместо той которая в этом видеоуроке или в дополнение к ней? Потому что я добавляю и появляется ошибка: self.db.c.execute('''DELETE FROM sqlite_sequence WHERE name = ‘тут название таблицы''',(self.tree.set(selection_item, '#1'),))
      sqlite3.OperationalError: no such table: sqlite_sequence Причём своё название таблицы что в кавычках, что без - результат всё равно ошибка

  • @RadFinder
    @RadFinder 4 роки тому

    Сегодня наткнулся на ролики, почитал каменты. Это что теперь 2 месяца ждать следующий ролик?))

    • @ITHobbies
      @ITHobbies  4 роки тому +1

      лайк, подписка и колокольчик и видео будут выходить чаще... всё зависит от Вас.

    • @takoyneveroyatniy7206
      @takoyneveroyatniy7206 4 роки тому

      8+ месяцев, как видишь)

  • @ilya_fimin
    @ilya_fimin 4 роки тому

    Когда видео?

  • @pickleslover7041
    @pickleslover7041 4 роки тому +1

    здравствуйте, обнаружил упущение, запись можно удалить пока ID не двузначное/более чисто (10, 11, 12 ... 999...), затем выдает ошибку:
    "File "директория в которой находится файл", line 63, in delete_records
    self.db.c.execute('''DELETE FROM finance WHERE id=?''', (self.tree.set(selection_item, '#1')))
    sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied."

    • @pickleslover7041
      @pickleslover7041 4 роки тому +4

      нашел решение:
      - вместо - self.db.c.execute('''DELETE FROM finance WHERE id= ? ''', (self.tree.set(selection_item, '#1')))
      - необходимо - self.db.c.execute('''DELETE FROM finance WHERE id= ? ''', [self.tree.set(selection_item, '#1')])

    • @Sensys93
      @Sensys93 4 роки тому

      ​@@pickleslover7041 , круто спасибо за баг репорт)

  • @nikmy_
    @nikmy_ 5 років тому +1

    А если ничего не выделить и нажать кнопку "Редактировать"? Как сделать, чтобы в таком случае кнопка не работала?

    • @user-wl2ro8nb6l
      @user-wl2ro8nb6l 4 роки тому

      Мне тоже интересно...

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      проверку надо сделать, там же есть метод tree.set

  • @den6544
    @den6544 4 роки тому

    И что, его можно будет упаковать в ехе файл вместе с базой данных?

    • @ITHobbies
      @ITHobbies  4 роки тому

      База будет лежать рядом с ехе

  • @user-fy8sm8lh2o
    @user-fy8sm8lh2o 4 роки тому +1

    Никак не могу разобраться: почему удаление происходит лишь, когда id9 удаления не происходит, но на консоль выдаётся ошибка (хотя программа продолжает функционировать).

    • @ITHobbies
      @ITHobbies  4 роки тому +2

      self.db.c.execute('''DELETE FROM finance WHERE id=?''', (self.tree.set(selection_item, '#1'),))

    • @user-fy8sm8lh2o
      @user-fy8sm8lh2o 4 роки тому

      @@ITHobbies Спасибо. У меня была пропущена последняя запятая между скобок. Поставил - и функция заработала.

    • @ITHobbies
      @ITHobbies  4 роки тому

      Это мой баг, в следующем видео исправлю

    • @user-xz7ke3fe2h
      @user-xz7ke3fe2h 4 роки тому

      @@ITHobbies Ты конечно молодец, все по честному и ошибки и исправления , но программу не доделал и бросил,
      нет суммирования по доходам и расходам и показания баланса .Минус, что нет команды запуска самой программы exe можно много продолжать долго, но за место под солнце стоит побороться ты зря остановился!

    • @Sensys93
      @Sensys93 4 роки тому

      @@user-xz7ke3fe2h видео уже отснято, сейчас монтирую

  • @vassi2901
    @vassi2901 4 роки тому

    Здравствуйте, вопрос про Child окна. Мы создали класс Child для дочерних окон и затем вызываем класс окна с помощью кнопки. То есть если я хочу создать ещё одно дочернее окно и вызвать его другой кнопкой, мне надо опять создать класс дочернего окна например child2? Я думал что класс создаётся один для миллион окон. Помогите кто знает.

    • @dstddanilscraptd6875
      @dstddanilscraptd6875 3 роки тому

      просто фокус убери с дочернего окна и надела себе сколько хочешь окон. или просто в коде вызов функцию с параметром класса

    • @vassi2901
      @vassi2901 3 роки тому

      @@dstddanilscraptd6875 Спасибо за ответ и совет, но фокус тут не причем.Ууже понял как делать, решил проблему

    • @zadovrus6719
      @zadovrus6719 Рік тому

      @@vassi2901 Как решил. Помоги!!!! В ответ скопируй своё решение сюда.. добрый человек

  • @Furkas91
    @Furkas91 5 років тому

    При добавлении больше 10 записей, ломается удаление конкретно set() начинает выдавать картеж. Это лечится?

    • @vladimirsekta4206
      @vladimirsekta4206 5 років тому +3

      "('''DELETE FROM finance WHERE id=?''', (self.tree.set(selection_item, '#1'),))" запятую влепите после (selection_item, '#1')

    • @user-ni5zx4pg6e
      @user-ni5zx4pg6e 4 роки тому

      @@vladimirsekta4206 чудеса какие-то. Почему так работает?

    • @oleksandr_brit
      @oleksandr_brit 4 роки тому

      @@user-ni5zx4pg6e Показывает что это кортеж из элементов.

  • @user-hc6ff4xr8o
    @user-hc6ff4xr8o 4 роки тому

    На это у тебя ушло 2 года?

  • @Yes.Im.Mr.Anderson
    @Yes.Im.Mr.Anderson 4 роки тому

    Все? Продолжения не будет?

    • @ITHobbies
      @ITHobbies  4 роки тому +1

      Будет)

    • @Yes.Im.Mr.Anderson
      @Yes.Im.Mr.Anderson 4 роки тому

      @@ITHobbies Дай Кофлер тебе стамины добрый человек)

    • @ITHobbies
      @ITHobbies  4 роки тому

      Переведи)

    • @Yes.Im.Mr.Anderson
      @Yes.Im.Mr.Anderson 4 роки тому

      @@ITHobbies 100000101001000011000010000111001100000100000110101000011111010001000100100001110111000011010110001000000100000100010000101000011010110000110001100001101011000001000100000110001000010100001100001000011110010000111000100001111011000100101110000010000110100100001111101000011000110001000000100010010111000011100110000010001000111100001101011000011101110000111110100001100101000011010110000111010101001

    • @ITHobbies
      @ITHobbies  4 роки тому

      А ну так бы сразу

  • @sergeichwelcome
    @sergeichwelcome 4 роки тому +2

    Кто поставил dislike, того не одобряю.

  • @osada4367
    @osada4367 4 роки тому

    РОДНОЙ КУДА ПРОПАЛ !!???!

    • @ITHobbies
      @ITHobbies  4 роки тому +1

      Жив, здоров, спасибо )