Python SQLite #3: команды SELECT и INSERT при работе с таблицами БД
HTML-код
- Опубликовано: 11 сен 2024
- Инфо-сайт: proproprogs.ru
Команда INSERT INTO добавления записи в таблицу и SELECT для формирования выборки. Рассматриваются дополнительно ключевые слова: VALUES, FROM, WHERE, ORDER BY, LIMIT.
Чётко и по делу. Без рекламы, заминок и лирических отступлений.
2 секунды на интро, 2 секунды на аутро. Все остальные 14 минут - исключительно образовательный контент.
Автор очень крут.
Курс мега-крут! Столько концентрированной и полезной инфы в 10-минутных видео нужно еще поискать! У автора явно талант к преподаванию.)
Сергей, спасибо Вам за уроки!
Хочу немного дополнить информацию (иногда может быть полезно):
Инструкция ORDER BY может принимать несколько колонок, тогда сортировка записей будет происходить сначала по значениям в первой из них, а если значения будут равные - по значениям второй и так далее.
еще раз спасибо мужик, твои уроки это нечто) все понятно и четно, спасибо тебе еще раз за твои уроки
Очень качественные уроки. Благодарю.
Большое спасибо,. Отличный материал, понятное и наглядное объяснение
скоро буду программировать на джанго!😊, спасибо Сергей! Красавчик
Супер доходчиво, спасибо!
selfedu огромное спасибо! Благодоря тебе я научился создавать бд вносить данные, выводить данные, сортировать по запросу. И все это за три урока. Ставлю лайк под каждым видео, летим вперед на встречу к знаниям
Очень актуально и по сей день! Спасибо
конечно, прикольно, но хотелось больше посмотреть на библиотеку и подробное объяснение как питон соединяется с бд
Стоит быть внимательным. Так как таблицу кто то начет с конца прошлого урока. А там уже в таблице появилось вместо 4 уже 5 разделов в таблице
Спасибо, узнал много о команде select
respect bro
Спасибо огромное за уроки!
Отличный контент! То что я искал 🔥
Спасибо за подробное разъяснение, очень полезно.
Спасибо огромное за классный контент!
sqlite3.OperationalError: table test_table has 5 columns but 4 values were supplied
Отличный материал!
Спасибо, очень полезно. Только IDE питона маловато в ролике. Для наглядности.
Четко и понятно!
1:55 то чувство когда ты Михаил и тебе 19)
спасибо
Очень удобно будет вместе с sqlite3 использовать библиотеку pandas
Отличный урок, просто некоторое америко-язычное слово типа "sex" можно было бы написать британо-язычным словом "gender"...
а для чего?
У меня не заработала первая вставка в таблицу, пока я явно не указал что нужно в четыре конкретных столбца вставлять данные(
Спасибо большое!
Спасибо за видео!
В первом уроке сделали первичный ключ, а во втором его удалили и ни слова не сказали, как итог ничего не работает. Пришлось прочитать 100 комментариев, чтобы понять в чем ошибка. Обидно. Хотя бы в описании ролика это отметьте и информацию про закрытие файла в контекстном менеджере, что его делать руками все-таки надо.
загадка на внимательность хД
Ну вообще в этом и прикол , ты столкнулся с ошибкой и смог ее исправить , это хорошо) я кстати сразу нашёл подвох и переписал запрос
супер
👏✍👍
Я тебя люблю
Спасибо за урок! Существует ли возможность проверить наличие данных в таблице перед их добавлением в БД?
Добрый день. Спасибо за урок. У меня такой вопрос: Как вставить сразу несколько записей одним запросом?
Например, так:
INSERT INTO `contents` (`id`, `chapter`, `lang_id`, `sub_id`) VALUES
(1, 'Введение в язык Python', 1, 3),
(2, 'Базовые конструкции языка', 1, 3),
(3, 'Строки и коллекции данных', 1, 3),
...
СПАСИБО!
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 то все отображается?
Без понятия. У меня в DB отображается всё, а в VS Code только один персонаж из всего того списка))
вам бы еще таймкоды, и вообще незаконно много пользы было бы
СПАСИБО
Спасибо большое.
Быть может вы подскажите, почему dbbrowser может делать по умолчанию еще и дополнительную таблицу sequence? (Не понял даже в какой момент это стало происходить, вроде ничего лишнего не добавлял в код)
Она добавляется автоматически для хранения служебной информации по БД. Не обращайте на нее внимание )
@@selfedu_rus Спасибо
@@user-rw2ig6nb5l тоже с этим столкнулся)спасибо за ваш комментарий)
Друг, что с сайтом твоим?
Классный контент и главное очень помогает мне бесплатно учиться
Но сегодня не могу зайти на твой сайт(((
уже все поправили - пользуйтесь )
👍
Значит при вызове cur.fetchone() БД возвращает первую строку и больше не будет именно ее возвращать через cur?
Потому что при cur.fetchmany(2) БД возвращает уже следующие 2 поля, игнорирую то, что мы уже получили через fetchone()
Можно перемещать указатель позиции для объекта cur, на память не помню, надо посмотреть эту функцию.
fetchall еще ведь
а можно что бы через консоль CMD или через сам код code. py заносить и выводить данные на экран CMD?
А как загрузить данные из файла? iNSERT же работает для единичных вставок
зачем удалил в этом уроке колонку user_id???
1:50 У меня с предыдущего урока осталась вкладка user_id и теперь выдеает ошибку!
удали)
Не понял пример с приоритетом 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
Сначала проверяется AND, затем OR.
прикольно было бы если бы автор весь конспект оставлял 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
На сайте proproprogs.ru все уже законспектировано! ) Пользуйтесь!
@@selfedu_rus удобно было бы чтобы вы одним комментарием к каждому видео оставляли конспект, не все знают, что он есть на сайте, спасибо за ваш труд
Доброе время суток почему после использования db.fetchmany(2), экземпляр класса с имене db пустой? Дальше с ним нечего не сделать например перебор(
не совсем понятно, почему db, там же класс Cursor использоваться должен при вызове этого метода? И fetchmany(size) - возвращает число записей не более size
@@selfedu_rus db = con.cursor()
db.execute("SELECT * FROM user WHERE score > 100 ORDER BY score DESC LIMIT 4 ")
@@selfedu_rus может я что-то накосячил)
@@donfedor007 В целом все верно, возможно, у вас переменная db уже существует и ссылается на БД, обычно используют переменную cur = con.cursor()
@@selfedu_rus спасибо
Как записать так, чтобы вместо >100 в SELECT, было записана >g? Где g-это переменная равная 100. Возможно ли такое?
нет, в SQL нельзя, можно только сформировать SQL-запрос (это обычная строка) с нужным значением переменной.
@@selfedu_rus спасибо
@@selfedu_rus даже если вместо браузера использовать редактор питона нельзя?
В коде python можно, с помощью f-строк. В самом SQL - нет.
Я ввёл 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 всё-таки вручную нужно вводить. Либо прописывать названия полей.
если id PRIMARY KEY AUTOINCREMENT, то само формируется
@@selfedu_rus У меня тоже прописано 'user_id INTEGER PRIMARY KEY AUTOINCREMENT,' но ошибка такая же
@@АртемПавловский-й8щ ага, я дальше комментарий писал в чем проблема была
@@Toksi86 я уже понял, спасибо
Vне кажется, вы забыли про INSERT...
В самом начале идет
А как сделать что бы данные автоматически заносились?
Автоматически это как?
@@selfedu_rus Я делаю бота для вк беседы,и как сделать так что бы когда пользователь писал своё первое смс то бот его заносил в бд
@@magister3316 с помощью функций языка SQLite (или через sqlalchemy, если вы его подключаете)
@@selfedu_rus Ну я знаю что с помощью sqlite, но я вот что не знаю как сделать так что бы данные были в точь точь,например зашёл в беседу и написал новое смс кирилл и его бот занёс в бд что бы было имя кирилл начальная сумма денег и т.д
Занятно, не понимаю чему тут люди радуются, ведь в данном курсе ты больше говоришь про sql, нежели про связку с питоном. Только под конец этого ролика уделил 5 секунд. Молодец! Так держать... Ох уж эти инфо цыгане....
Где же id INTEGER PRIMARY KEY AUTOINCREMENT начал без него и что простые тексты!! Уже бы последовательно как то давал материал:((
это SQLite здесь id формируется автоматически и доступен через rowid
@@selfedu_rus я знаю что автоматом , знаком с MySQL но предыдущем ролики как класно затронул эту тему и все мутно как-то похерилось, просто в этом ролике как то выпала инфа об PRIMARY KEY, поищу в инете инфу, просто надо было довести до финала на счет этого а то все расплывчато!!! Темболее это очень важный элемент!, и не инзерт а инсёрт!!))
@@sergsangels где-то я о нем писал, либо в более поздних здесь, либо когда Flask рассматривал )
@@sergsangels песни на английском послушайте ( Pretty Girl) ни гёрл, а гээл, по Вашим ё русифицирован англ.
@@sergsangels ruclips.net/video/ptIXwyxf7XQ/видео.html&ab_channel=7clouds
кагбы там небыло но
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 эт вообще-то sqlite как бы, а не mysql
@@AnTube123 значит я тупой..
@@AnTube123 как же я удевился что я до сех пор не решил проблему лол)
А как Вы добавили за раз сразу несколько записей?
Мария 2 18 400
Сергей 1 33 2000
Владимир 1 43 100
Елена 2 17 500
Юля 2 23 700
вроде нигде этого нет, БД была сформирована через DB Browser for SQLite
@@selfedu_rus Текст скопировал из вашего текстового урока. На видео у Вас получается с многострочным текстом почти мгновенно. У меня не вставляется так, как у Вас.
@@user-ix7lb1sx4k там предполагается добавление через DB Browser for SQLite, а не через команду INSERT
@@selfedu_rus Так и пробовал делать. Только так, как на видео, не получилось. Возможно Вы вырезали часть видео и из-за этого там не понятно.
@@user-ix7lb1sx4k когда добавляете записи в БД не забывайте сохранить базу. Все должно получиться!
Спасибо!
Спасибо
спасибо