Python SQLite #3: команды SELECT и INSERT при работе с таблицами БД

Поделиться
HTML-код
  • Опубликовано: 11 сен 2024
  • Инфо-сайт: proproprogs.ru
    Команда INSERT INTO добавления записи в таблицу и SELECT для формирования выборки. Рассматриваются дополнительно ключевые слова: VALUES, FROM, WHERE, ORDER BY, LIMIT.

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

  • @user-ew9du5li8b
    @user-ew9du5li8b 8 месяцев назад +34

    Чётко и по делу. Без рекламы, заминок и лирических отступлений.
    2 секунды на интро, 2 секунды на аутро. Все остальные 14 минут - исключительно образовательный контент.
    Автор очень крут.

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

    Курс мега-крут! Столько концентрированной и полезной инфы в 10-минутных видео нужно еще поискать! У автора явно талант к преподаванию.)

  • @medencev
    @medencev Год назад +9

    Сергей, спасибо Вам за уроки!
    Хочу немного дополнить информацию (иногда может быть полезно):
    Инструкция ORDER BY может принимать несколько колонок, тогда сортировка записей будет происходить сначала по значениям в первой из них, а если значения будут равные - по значениям второй и так далее.

  • @mrjustin3770
    @mrjustin3770 Месяц назад +1

    еще раз спасибо мужик, твои уроки это нечто) все понятно и четно, спасибо тебе еще раз за твои уроки

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

    Очень качественные уроки. Благодарю.

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

    Большое спасибо,. Отличный материал, понятное и наглядное объяснение

  • @Muhammadali-pl7sb
    @Muhammadali-pl7sb 6 месяцев назад +2

    скоро буду программировать на джанго!😊, спасибо Сергей! Красавчик

  • @TimScherbakov
    @TimScherbakov 4 года назад +7

    Супер доходчиво, спасибо!

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

    selfedu огромное спасибо! Благодоря тебе я научился создавать бд вносить данные, выводить данные, сортировать по запросу. И все это за три урока. Ставлю лайк под каждым видео, летим вперед на встречу к знаниям

  • @artemkim0
    @artemkim0 5 месяцев назад

    Очень актуально и по сей день! Спасибо

  • @user-gd4en4ot3u
    @user-gd4en4ot3u 10 месяцев назад +2

    конечно, прикольно, но хотелось больше посмотреть на библиотеку и подробное объяснение как питон соединяется с бд

  • @plushfly900
    @plushfly900 Год назад +3

    Стоит быть внимательным. Так как таблицу кто то начет с конца прошлого урока. А там уже в таблице появилось вместо 4 уже 5 разделов в таблице

  • @misterferny0
    @misterferny0 4 года назад +3

    Спасибо, узнал много о команде select

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

    respect bro

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

    Спасибо огромное за уроки!

  • @alen_tyt
    @alen_tyt 3 года назад +3

    Отличный контент! То что я искал 🔥

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

    Спасибо за подробное разъяснение, очень полезно.

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

    Спасибо огромное за классный контент!

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

    sqlite3.OperationalError: table test_table has 5 columns but 4 values were supplied

  • @АнатолийКузнецов-ж6б

    Отличный материал!

  • @Ardbot-fp8oq
    @Ardbot-fp8oq 3 года назад +3

    Спасибо, очень полезно. Только IDE питона маловато в ролике. Для наглядности.

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

    Четко и понятно!

  • @nerves6401
    @nerves6401 3 года назад +5

    1:55 то чувство когда ты Михаил и тебе 19)

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 6 месяцев назад +1

    спасибо

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

    Очень удобно будет вместе с sqlite3 использовать библиотеку pandas

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

    Отличный урок, просто некоторое америко-язычное слово типа "sex" можно было бы написать британо-язычным словом "gender"...

  • @АлександрКаптуров-с8и
    @АлександрКаптуров-с8и 3 месяца назад +1

    У меня не заработала первая вставка в таблицу, пока я явно не указал что нужно в четыре конкретных столбца вставлять данные(

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

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

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

    Спасибо за видео!

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

    В первом уроке сделали первичный ключ, а во втором его удалили и ни слова не сказали, как итог ничего не работает. Пришлось прочитать 100 комментариев, чтобы понять в чем ошибка. Обидно. Хотя бы в описании ролика это отметьте и информацию про закрытие файла в контекстном менеджере, что его делать руками все-таки надо.

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

      загадка на внимательность хД

    • @user-um2eu1dy8t
      @user-um2eu1dy8t Год назад +1

      Ну вообще в этом и прикол , ты столкнулся с ошибкой и смог ее исправить , это хорошо) я кстати сразу нашёл подвох и переписал запрос

  • @1984Nik1
    @1984Nik1 4 года назад +2

    супер

  • @jamjam3337
    @jamjam3337 11 месяцев назад +1

    👏✍👍

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

    Я тебя люблю

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

    Спасибо за урок! Существует ли возможность проверить наличие данных в таблице перед их добавлением в БД?

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

    Добрый день. Спасибо за урок. У меня такой вопрос: Как вставить сразу несколько записей одним запросом?

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

      Например, так:
      INSERT INTO `contents` (`id`, `chapter`, `lang_id`, `sub_id`) VALUES
      (1, 'Введение в язык Python', 1, 3),
      (2, 'Базовые конструкции языка', 1, 3),
      (3, 'Строки и коллекции данных', 1, 3),
      ...

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

    СПАСИБО!

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

    import sqlite3 as sq
    with sq.connect("saper.db") as con:
    cur = con.cursor()
    cur.execute("SELECT * FROM users")
    result = cur.fetchall()
    print(result)
    Кто знает, почему у меня в pycharm при запуске этого кода отображается пустой список, хотя я внес в таблицу данные, а в db browser если написать SELECT * FROM users то все отображается?

    • @13-th_Lord
      @13-th_Lord 3 месяца назад +1

      Без понятия. У меня в DB отображается всё, а в VS Code только один персонаж из всего того списка))

  • @user-vo8gq5ij3y
    @user-vo8gq5ij3y 2 месяца назад +1

    вам бы еще таймкоды, и вообще незаконно много пользы было бы

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

    СПАСИБО

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

    Спасибо большое.
    Быть может вы подскажите, почему dbbrowser может делать по умолчанию еще и дополнительную таблицу sequence? (Не понял даже в какой момент это стало происходить, вроде ничего лишнего не добавлял в код)

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

      Она добавляется автоматически для хранения служебной информации по БД. Не обращайте на нее внимание )

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

      @@selfedu_rus Спасибо

    • @RomanZverev-yc5qc
      @RomanZverev-yc5qc 2 года назад

      ​@@user-rw2ig6nb5l тоже с этим столкнулся)спасибо за ваш комментарий)

  • @СергейГаранин-о5л
    @СергейГаранин-о5л 3 года назад +1

    Друг, что с сайтом твоим?
    Классный контент и главное очень помогает мне бесплатно учиться
    Но сегодня не могу зайти на твой сайт(((

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

      уже все поправили - пользуйтесь )

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

    👍

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

    Значит при вызове cur.fetchone() БД возвращает первую строку и больше не будет именно ее возвращать через cur?
    Потому что при cur.fetchmany(2) БД возвращает уже следующие 2 поля, игнорирую то, что мы уже получили через fetchone()

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

      Можно перемещать указатель позиции для объекта cur, на память не помню, надо посмотреть эту функцию.

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

    fetchall еще ведь

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

    а можно что бы через консоль CMD или через сам код code. py заносить и выводить данные на экран CMD?

  • @user-xg4pd7en9d
    @user-xg4pd7en9d Год назад

    А как загрузить данные из файла? iNSERT же работает для единичных вставок

  • @olehliknarovych437
    @olehliknarovych437 7 месяцев назад

    зачем удалил в этом уроке колонку user_id???

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

    1:50 У меня с предыдущего урока осталась вкладка user_id и теперь выдеает ошибку!

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

    Не понял пример с приоритетом AND над OR.
    SELECT * FROM users WHERE old IN(19, 32) AND score > 300 OR sex = 1
    SELECT * FROM users WHERE (old IN(19, 32) OR sex = 1) AND score > 300

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

      Сначала проверяется AND, затем OR.

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

    прикольно было бы если бы автор весь конспект оставлял 1 комментарием, а то каждый раз останавливаться и писать не удобно, быстрее можно будет посмотреть видео, вот мой конспект

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

      INSERT-добавление записи в таблицу
      SELECT-выборка данных из таблиц(в том числе и при создании
      сводной выборки из нескольких таблиц)
      INSRT INTO (,,
      VALUES(,)
      INSERT INTO VALUES(,)
      SELECT НАЗВАНИЯ ПОЛЕЙ FROM ИМЯ ТАБЛИЦЫ
      SELECT * FROM ИМЯ ТАБЛИЦЫ показываются все поля
      SELECT * FROM users WHERE score < 1000 выбраться всех игроков
      у которых меньше 1000 очков
      SELECT * FROM users WHERE score BETWEEN 500 AND 1000 выбрать
      всех игроков у которых количество очков от 500 до 1000
      old IN(19,30) AND score

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

      На сайте proproprogs.ru все уже законспектировано! ) Пользуйтесь!

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

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

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

    Доброе время суток почему после использования db.fetchmany(2), экземпляр класса с имене db пустой? Дальше с ним нечего не сделать например перебор(

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

      не совсем понятно, почему db, там же класс Cursor использоваться должен при вызове этого метода? И fetchmany(size) - возвращает число записей не более size

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

      @@selfedu_rus db = con.cursor()
      db.execute("SELECT * FROM user WHERE score > 100 ORDER BY score DESC LIMIT 4 ")

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

      @@selfedu_rus может я что-то накосячил)

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

      @@donfedor007 В целом все верно, возможно, у вас переменная db уже существует и ссылается на БД, обычно используют переменную cur = con.cursor()

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

      @@selfedu_rus спасибо

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

    Как записать так, чтобы вместо >100 в SELECT, было записана >g? Где g-это переменная равная 100. Возможно ли такое?

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

      нет, в SQL нельзя, можно только сформировать SQL-запрос (это обычная строка) с нужным значением переменной.

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

      @@selfedu_rus спасибо

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

      @@selfedu_rus даже если вместо браузера использовать редактор питона нельзя?

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

      В коде python можно, с помощью f-строк. В самом SQL - нет.

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

    Я ввёл INSERT INTO users VALUES('Михаил', 1, 19, 1000)
    Выдало ошибку:
    Execution finished with errors.
    Result: table users has 5 columns but 4 values were supplied
    At line 1:
    INSERT INTO users VALUES('Михаил', 1, 19, 1000)
    Получается user_id всё-таки вручную нужно вводить. Либо прописывать названия полей.

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

      если id PRIMARY KEY AUTOINCREMENT, то само формируется

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

      @@selfedu_rus У меня тоже прописано 'user_id INTEGER PRIMARY KEY AUTOINCREMENT,' но ошибка такая же

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

      @@АртемПавловский-й8щ ага, я дальше комментарий писал в чем проблема была

    • @АртемПавловский-й8щ
      @АртемПавловский-й8щ Год назад

      @@Toksi86 я уже понял, спасибо

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

    Vне кажется, вы забыли про INSERT...

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

      В самом начале идет

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

    А как сделать что бы данные автоматически заносились?

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

      Автоматически это как?

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

      ​@@selfedu_rus Я делаю бота для вк беседы,и как сделать так что бы когда пользователь писал своё первое смс то бот его заносил в бд

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

      @@magister3316 с помощью функций языка SQLite (или через sqlalchemy, если вы его подключаете)

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

      @@selfedu_rus Ну я знаю что с помощью sqlite, но я вот что не знаю как сделать так что бы данные были в точь точь,например зашёл в беседу и написал новое смс кирилл и его бот занёс в бд что бы было имя кирилл начальная сумма денег и т.д

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

    Занятно, не понимаю чему тут люди радуются, ведь в данном курсе ты больше говоришь про sql, нежели про связку с питоном. Только под конец этого ролика уделил 5 секунд. Молодец! Так держать... Ох уж эти инфо цыгане....

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

    Где же id INTEGER PRIMARY KEY AUTOINCREMENT начал без него и что простые тексты!! Уже бы последовательно как то давал материал:((

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

      это SQLite здесь id формируется автоматически и доступен через rowid

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

      @@selfedu_rus я знаю что автоматом , знаком с MySQL но предыдущем ролики как класно затронул эту тему и все мутно как-то похерилось, просто в этом ролике как то выпала инфа об PRIMARY KEY, поищу в инете инфу, просто надо было довести до финала на счет этого а то все расплывчато!!! Темболее это очень важный элемент!, и не инзерт а инсёрт!!))

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

      @@sergsangels где-то я о нем писал, либо в более поздних здесь, либо когда Flask рассматривал )

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

      @@sergsangels песни на английском послушайте ( Pretty Girl) ни гёрл, а гээл, по Вашим ё русифицирован англ.

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

      @@sergsangels ruclips.net/video/ptIXwyxf7XQ/видео.html&ab_channel=7clouds

  • @koteich_live
    @koteich_live 4 года назад +1

    кагбы там небыло но

    • @koteich_live
      @koteich_live 4 года назад

      import mysql.connector
      from mysql.connector import Error
      def create_connection(host_name, user_name, user_password):
      connection = None
      try:
      connection = mysql.connector.connect(
      host=host_name,
      user=user_name,
      passwd=user_password
      )
      print("Connection to MySQL DB successful")
      except Error as e:
      print(f"The error '{e}' occurred")

    • @koteich_live
      @koteich_live 4 года назад

      так лучше

    • @AnTube123
      @AnTube123 4 года назад

      @@koteich_live эт вообще-то sqlite как бы, а не mysql

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

      @@AnTube123 значит я тупой..

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

      @@AnTube123 как же я удевился что я до сех пор не решил проблему лол)

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

    А как Вы добавили за раз сразу несколько записей?
    Мария 2 18 400
    Сергей 1 33 2000
    Владимир 1 43 100
    Елена 2 17 500
    Юля 2 23 700

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

      вроде нигде этого нет, БД была сформирована через DB Browser for SQLite

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

      @@selfedu_rus Текст скопировал из вашего текстового урока. На видео у Вас получается с многострочным текстом почти мгновенно. У меня не вставляется так, как у Вас.

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

      @@user-ix7lb1sx4k там предполагается добавление через DB Browser for SQLite, а не через команду INSERT

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

      @@selfedu_rus Так и пробовал делать. Только так, как на видео, не получилось. Возможно Вы вырезали часть видео и из-за этого там не понятно.

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

      @@user-ix7lb1sx4k когда добавляете записи в БД не забывайте сохранить базу. Все должно получиться!

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

    Спасибо!

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

    Спасибо

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

    спасибо