Получаем названия столбцов из результата запроса
При работе с базой данных важно знать названия полей в результатах запроса. Новички часто пытаются вручную догадываться о структуре результата, особенно если данных много или они получены из внешнего источника.
С sqlite3 можно легко получить названия столбцов прямо из курсора после выполнения запроса, без дополнительного кода.
🎯 Итог
Чтобы получить список названий столбцов из SQL-запроса, можно использовать cursor.description — это простой способ понять структуру данных, особенно при работе с динамическими запросами.
При работе с базой данных важно знать названия полей в результатах запроса. Новички часто пытаются вручную догадываться о структуре результата, особенно если данных много или они получены из внешнего источника.
С sqlite3 можно легко получить названия столбцов прямо из курсора после выполнения запроса, без дополнительного кода.
🎯 Итог
Чтобы получить список названий столбцов из SQL-запроса, можно использовать cursor.description — это простой способ понять структуру данных, особенно при работе с динамическими запросами.
Автоматически подставляем параметры в SQL-запрос
Новички иногда вставляют значения в SQL-запросы через f-строки или конкатенацию, что небезопасно и может привести к SQL-инъекциям. Python предлагает встроенный и безопасный способ подстановки данных в запрос с помощью параметризованных запросов.
Это не только безопаснее, но и удобнее для работы с переменными.
🎯 Итог
Используйте ? и кортежи для подстановки значений в SQL-запросы — это защищает от SQL-инъекций и делает код чище и безопаснее.
Новички иногда вставляют значения в SQL-запросы через f-строки или конкатенацию, что небезопасно и может привести к SQL-инъекциям. Python предлагает встроенный и безопасный способ подстановки данных в запрос с помощью параметризованных запросов.
Это не только безопаснее, но и удобнее для работы с переменными.
🎯 Итог
Используйте ? и кортежи для подстановки значений в SQL-запросы — это защищает от SQL-инъекций и делает код чище и безопаснее.
Получаем количество строк, затронутых SQL-запросом
После выполнения SQL-запроса может потребоваться узнать, сколько строк было затронуто — например, при UPDATE или DELETE. Многие новички не знают, что Python позволяет легко получить это значение.
Используйте атрибут cursor.rowcount, чтобы сразу узнать, сколько строк было изменено или удалено.
🎯 Итог
cursor.rowcount позволяет получить количество строк, затронутых последним SQL-запросом — удобно для логирования, проверки и отладки.
После выполнения SQL-запроса может потребоваться узнать, сколько строк было затронуто — например, при UPDATE или DELETE. Многие новички не знают, что Python позволяет легко получить это значение.
Используйте атрибут cursor.rowcount, чтобы сразу узнать, сколько строк было изменено или удалено.
🎯 Итог
cursor.rowcount позволяет получить количество строк, затронутых последним SQL-запросом — удобно для логирования, проверки и отладки.
Безопасные SQL-запросы с параметрами
Новички часто вставляют значения прямо в SQL-строку, что может привести к SQL-инъекциям и ошибкам. В Python с библиотекой sqlite3 (и другими DB API) правильнее использовать параметры запроса.
Вместо конкатенации строк, используйте ? — это защитит вас от уязвимостей и избавит от лишнего форматирования.
🎯 Итог
Используйте параметризованные запросы (? и кортеж) вместо подстановки значений вручную — это безопаснее и чище.
Новички часто вставляют значения прямо в SQL-строку, что может привести к SQL-инъекциям и ошибкам. В Python с библиотекой sqlite3 (и другими DB API) правильнее использовать параметры запроса.
Вместо конкатенации строк, используйте ? — это защитит вас от уязвимостей и избавит от лишнего форматирования.
🎯 Итог
Используйте параметризованные запросы (? и кортеж) вместо подстановки значений вручную — это безопаснее и чище.
Оптимизируем множественные вставки в БД
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте executemany() — он вставляет все строки одним запросом, что значительно ускоряет выполнение.
🎯 Итог
Используйте executemany() для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте executemany() — он вставляет все строки одним запросом, что значительно ускоряет выполнение.
🎯 Итог
Используйте executemany() для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.
⚡ Получаем количество строк без загрузки всех данных
Чтобы узнать, сколько строк вернёт запрос, не обязательно загружать все данные в память. Вместо SELECT * используйте SELECT COUNT(*) — это быстрее и экономит ресурсы.
🎯 Итог
Используйте COUNT(*) для быстрой оценки количества записей — это эффективнее, чем вытягивать все строки и считать их вручную.
Чтобы узнать, сколько строк вернёт запрос, не обязательно загружать все данные в память. Вместо SELECT * используйте SELECT COUNT(*) — это быстрее и экономит ресурсы.
🎯 Итог
Используйте COUNT(*) для быстрой оценки количества записей — это эффективнее, чем вытягивать все строки и считать их вручную.
Безопасные SQL-запросы через параметризованные запросы
Новички часто подставляют значения в SQL-запрос через f-строки или конкатенацию, что может привести к SQL-инъекциям. Вместо этого используйте параметризованные запросы — это безопасно и правильно.
🎯 Итог
Всегда используйте параметризованные запросы для защиты от SQL-инъекций. Это безопаснее и чище, чем вручную подставлять значения в строки.
Новички часто подставляют значения в SQL-запрос через f-строки или конкатенацию, что может привести к SQL-инъекциям. Вместо этого используйте параметризованные запросы — это безопасно и правильно.
🎯 Итог
Всегда используйте параметризованные запросы для защиты от SQL-инъекций. Это безопаснее и чище, чем вручную подставлять значения в строки.
Быстрое создание таблицы, если её нет
При первом запуске скрипта бывает нужно создать таблицу, если она ещё не существует. Вместо проверки вручную можно использовать встроенную конструкцию SQL — CREATE TABLE IF NOT EXISTS.
🎯 Итог
CREATE TABLE IF NOT EXISTS позволяет избежать ошибок при повторном создании таблицы и упрощает инициализацию базы данных.
При первом запуске скрипта бывает нужно создать таблицу, если она ещё не существует. Вместо проверки вручную можно использовать встроенную конструкцию SQL — CREATE TABLE IF NOT EXISTS.
🎯 Итог
CREATE TABLE IF NOT EXISTS позволяет избежать ошибок при повторном создании таблицы и упрощает инициализацию базы данных.
Используем параметризованные запросы для защиты от SQL-инъекций
Новички часто подставляют значения в SQL-запросы через f-строки или конкатенацию, что может привести к уязвимостям. Вместо этого лучше использовать параметризованные запросы, которые автоматически экранируют значения и защищают от SQL-инъекций.
🎯 Итог
Параметризованные запросы не только безопаснее, но и делают код чище. Никогда не вставляй переменные напрямую в SQL — используй placeholder'ы (? или %s), и передавай значения отдельно.
Новички часто подставляют значения в SQL-запросы через f-строки или конкатенацию, что может привести к уязвимостям. Вместо этого лучше использовать параметризованные запросы, которые автоматически экранируют значения и защищают от SQL-инъекций.
🎯 Итог
Параметризованные запросы не только безопаснее, но и делают код чище. Никогда не вставляй переменные напрямую в SQL — используй placeholder'ы (? или %s), и передавай значения отдельно.
Получаем все строки как словари
При работе с SQLite результат запроса по умолчанию возвращается в виде кортежей. Это не очень удобно, особенно если нужно обращаться к значениям по названиям колонок. Можно включить специальный режим, чтобы строки возвращались как словари.
🎯 Итог
Используй row_factory = dict_factory, чтобы получать строки из БД как словари. Это упростит доступ к данным и сделает код более читаемым.
При работе с SQLite результат запроса по умолчанию возвращается в виде кортежей. Это не очень удобно, особенно если нужно обращаться к значениям по названиям колонок. Можно включить специальный режим, чтобы строки возвращались как словари.
🎯 Итог
Используй row_factory = dict_factory, чтобы получать строки из БД как словари. Это упростит доступ к данным и сделает код более читаемым.
Бывший маркетолог СберМаркета Юра Сапожников создал канал про E-commerce, российский онлайн-бизнес, маркетплейсы и digital – «Из коммерса в е-коммерса».
Если продаёте или покупаете в интернете, подписывайтесь, там цифры, новости, аналитика и шутейки иногда))
Юра сам из Е-кома и дружит со многими крупными компаниями, не редко публикуя анонсы раньше официальных пресс-релизов. Так что подписывайтесь: @hikollegi
Если продаёте или покупаете в интернете, подписывайтесь, там цифры, новости, аналитика и шутейки иногда))
Юра сам из Е-кома и дружит со многими крупными компаниями, не редко публикуя анонсы раньше официальных пресс-релизов. Так что подписывайтесь: @hikollegi
Безопасные SQL-запросы с параметрами
Многие новички склонны вставлять значения напрямую в SQL-запросы с помощью f-строк, что может привести к SQL-инъекциям. Вместо этого лучше использовать параметризованные запросы — это безопаснее и чище.
🎯 Итог
Избегай f-строк в SQL-запросах — всегда используй параметризованные запросы, чтобы защититься от SQL-инъекций и писать более надёжный код.
Многие новички склонны вставлять значения напрямую в SQL-запросы с помощью f-строк, что может привести к SQL-инъекциям. Вместо этого лучше использовать параметризованные запросы — это безопаснее и чище.
🎯 Итог
Избегай f-строк в SQL-запросах — всегда используй параметризованные запросы, чтобы защититься от SQL-инъекций и писать более надёжный код.
Автоматическое закрытие соединения с БД
Часто новички забывают закрыть соединение с базой данных, что может привести к утечкам ресурсов. Вместо ручного закрытия лучше использовать контекстный менеджер with, который автоматически закрывает соединение.
🎯 Итог
Используй with при работе с базами данных — это не только чище, но и безопаснее: соединение закроется автоматически даже при ошибках.
Часто новички забывают закрыть соединение с базой данных, что может привести к утечкам ресурсов. Вместо ручного закрытия лучше использовать контекстный менеджер with, который автоматически закрывает соединение.
🎯 Итог
Используй with при работе с базами данных — это не только чище, но и безопаснее: соединение закроется автоматически даже при ошибках.
Хотите научиться программировать, но теряетесь в выборе языка? Или уже изучаете Python, но не хватает практики? Тогда этот бесплатный мини-курс от Skillbox по Python-разработке — то, что нужно!
👉🏻 Если коротко: это мини-курс из 4 записанных уроков и 1 прямого эфира. Смотрите, когда удобно, после каждого выполняете задания. В итоге у вас будет 4 проекта для портфолио: Telegram-бот, который умеет превращать голос в текст, парсер для сбора данных и веб-страница на Flask. Неплохая практика для 5 занятий!
🎁 Ещё участников мини-курса ждут подарки: персональная карьерная консультация, скидка 10 000 рублей на любой курс Skillbox и подборка полезных материалов для старта карьеры в Python-разработке.
Переходите по ссылке и регистрируйтесь: https://epic.st/QeEKo?erid=2VtzqvjsSMq
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
👉🏻 Если коротко: это мини-курс из 4 записанных уроков и 1 прямого эфира. Смотрите, когда удобно, после каждого выполняете задания. В итоге у вас будет 4 проекта для портфолио: Telegram-бот, который умеет превращать голос в текст, парсер для сбора данных и веб-страница на Flask. Неплохая практика для 5 занятий!
🎁 Ещё участников мини-курса ждут подарки: персональная карьерная консультация, скидка 10 000 рублей на любой курс Skillbox и подборка полезных материалов для старта карьеры в Python-разработке.
Переходите по ссылке и регистрируйтесь: https://epic.st/QeEKo?erid=2VtzqvjsSMq
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Бесплатный мини-курс по Java — начните программировать уже сегодня
Java-разработчики востребованы и зарабатывают от 80 000 ₽. Хотите проверить свои силы? На мини-курсе вы создадите три проекта, освоите основы языка и поймете, подходит ли вам этот путь.
Без опыта в IT, бесплатно и с поддержкой эксперта. А еще получите доступ к материалам и скидку на обучение. К тому же, каждый, кто посмотрит 1-е занятие, получит доступ к изучению английского языка на платформе Skillbox на год.
Количество мест ограничено! Успейте записаться.
Реклама. Информация о рекламодателе по ссылкам в посте.
Java-разработчики востребованы и зарабатывают от 80 000 ₽. Хотите проверить свои силы? На мини-курсе вы создадите три проекта, освоите основы языка и поймете, подходит ли вам этот путь.
Без опыта в IT, бесплатно и с поддержкой эксперта. А еще получите доступ к материалам и скидку на обучение. К тому же, каждый, кто посмотрит 1-е занятие, получит доступ к изучению английского языка на платформе Skillbox на год.
Количество мест ограничено! Успейте записаться.
Реклама. Информация о рекламодателе по ссылкам в посте.
🧵 Упрощаем цепочки if с помощью match-case
Иногда при проверке значения переменной мы пишем длинную цепочку if-elif-else. Это выглядит громоздко и сложно читается.
С Python 3.10 можно использовать конструкцию match-case, которая делает код компактнее и читабельнее — особенно при работе со строками, числом или даже структурами данных.
🎯 Итог
match-case — это элегантная альтернатива if-elif-else в Python 3.10+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
Иногда при проверке значения переменной мы пишем длинную цепочку if-elif-else. Это выглядит громоздко и сложно читается.
С Python 3.10 можно использовать конструкцию match-case, которая делает код компактнее и читабельнее — особенно при работе со строками, числом или даже структурами данных.
🎯 Итог
match-case — это элегантная альтернатива if-elif-else в Python 3.10+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
Тестирование: быстрый старт в IT за 0₽
Зарплата начинающего Тестировщика от 80 000₽. Он проверяет работу сайтов, мобильных приложений и ищет в них ошибки. От тестировщика во многом зависит качество итогового продукта, поэтому спрос на данных специалистов растёт.
Прямо сейчас Skillbox отдает пятидневный курс по тестированию бесплатно.
Переходите по ссылке и участвуйте в тест-драйве профессии. Акция продлится до 18 мая: https://go.redav.online/9dd23fa42f4d4bc0?erid=2VfnxxcSezk&m=1
Зарплата начинающего Тестировщика от 80 000₽. Он проверяет работу сайтов, мобильных приложений и ищет в них ошибки. От тестировщика во многом зависит качество итогового продукта, поэтому спрос на данных специалистов растёт.
Прямо сейчас Skillbox отдает пятидневный курс по тестированию бесплатно.
Переходите по ссылке и участвуйте в тест-драйве профессии. Акция продлится до 18 мая: https://go.redav.online/9dd23fa42f4d4bc0?erid=2VfnxxcSezk&m=1
⏱️ Как быстро измерить время выполнения кода
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.