Быстрое создание таблицы, если её нет
При первом запуске скрипта бывает нужно создать таблицу, если она ещё не существует. Вместо проверки вручную можно использовать встроенную конструкцию 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
🧵 Упрощаем цепочки 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+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
⏱️ Как быстро измерить время выполнения кода
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
🔁 Как один раз инициализировать ресурс при первом использовании
Допустим, у тебя есть тяжёлая операция (например, подключение к БД, загрузка модели и т.д.), которую нужно выполнить только один раз при первом вызове. Для этого идеально подходит functools.lru_cache.
🎯 Итог
@lru_cache — простой способ ленивой инициализации: функция выполнится один раз, а результат будет использоваться повторно. Идеально для кэширования настроек, соединений и других «разовых» данных.
Допустим, у тебя есть тяжёлая операция (например, подключение к БД, загрузка модели и т.д.), которую нужно выполнить только один раз при первом вызове. Для этого идеально подходит functools.lru_cache.
🎯 Итог
@lru_cache — простой способ ленивой инициализации: функция выполнится один раз, а результат будет использоваться повторно. Идеально для кэширования настроек, соединений и других «разовых» данных.
⛓️ Как объединять цепочки условий красиво и читаемо
Иногда логика с множеством if становится громоздкой. В таких случаях удобно использовать словарь как аналог switch-case.
🎯 Итог
Словарь заменяет кучу if-elif-else, делает код чище и облегчает добавление новых случаев. Особенно полезно, когда условия связаны с конкретными значениями (например, кодами, командами или ролями).
Иногда логика с множеством if становится громоздкой. В таких случаях удобно использовать словарь как аналог switch-case.
🎯 Итог
Словарь заменяет кучу if-elif-else, делает код чище и облегчает добавление новых случаев. Особенно полезно, когда условия связаны с конкретными значениями (например, кодами, командами или ролями).
⏱️ Как замерить время выполнения кода элегантно
Иногда нужно узнать, сколько времени занял блок кода — для отладки, оптимизации или просто интереса. Вместо громоздких решений можно использовать контекстный менеджер.
🎯 Итог
Контекстный менеджер timeit позволяет быстро замерять производительность без лишнего шума. Особенно полезен при профилировании отдельных участков кода.
Иногда нужно узнать, сколько времени занял блок кода — для отладки, оптимизации или просто интереса. Вместо громоздких решений можно использовать контекстный менеджер.
🎯 Итог
Контекстный менеджер timeit позволяет быстро замерять производительность без лишнего шума. Особенно полезен при профилировании отдельных участков кода.
🧩 Как элегантно объединять словари с приоритетом значений
Часто нужно объединить два словаря, где значения из второго имеют приоритет. Это можно сделать просто и читаемо.
🎯 Итог
Синтаксис {**dict1, **dict2} объединяет словари, давая приоритет второму. Удобен для настройки конфигураций, параметров и всего, что связано с override'ами.
Часто нужно объединить два словаря, где значения из второго имеют приоритет. Это можно сделать просто и читаемо.
🎯 Итог
Синтаксис {**dict1, **dict2} объединяет словари, давая приоритет второму. Удобен для настройки конфигураций, параметров и всего, что связано с override'ами.
⚡ Быстрая проверка уникальности элементов в списке
Иногда нужно понять, все ли элементы в списке уникальны. Можно обойтись без циклов и лишней логики.
🎯 Итог
Преобразование списка во множество — быстрый способ проверить уникальность: set автоматически убирает дубликаты. Особенно полезно при валидации данных.
Иногда нужно понять, все ли элементы в списке уникальны. Можно обойтись без циклов и лишней логики.
🎯 Итог
Преобразование списка во множество — быстрый способ проверить уникальность: set автоматически убирает дубликаты. Особенно полезно при валидации данных.
Что, если вам прямо сейчас выдадут секрет мгновенного профессионального роста? Этот секрет — наш практический курс по топовым нейросетям!
И это не просто обещания. По данным исследования Resume Builder 49% компаний в настоящее время используют ChatGPT, 30% намерены делать это в будущем, 25% уже сэкономили с помощью этой технологии более 75 000 $.
Чем вам поможет курс 👇
🔵 Освоите 7 нейросетей.
🔵 Закрепите знания на практике, которая приближена к реальным задачам.
🔵 Получите доступ к чату с авторами курса.
🔵 Будете получать все обновления курса, потому что он останется у вас навсегда.
2 месяца учёбы достаточно, чтобы стать мастером топовых нейросетей и увеличить производительность работы в 10 раз. А также — выделиться на рынке труда.
Май возможностей: каждую неделю разыгрываем 2 MacBook!
Получите скидку до 60% на обучение и шанс выиграть крутой ноутбук!
Подробности по ссылке: https://epic.st/9pETA?erid=2VtzqxWc1mn
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
И это не просто обещания. По данным исследования Resume Builder 49% компаний в настоящее время используют ChatGPT, 30% намерены делать это в будущем, 25% уже сэкономили с помощью этой технологии более 75 000 $.
Чем вам поможет курс 👇
🔵 Освоите 7 нейросетей.
🔵 Закрепите знания на практике, которая приближена к реальным задачам.
🔵 Получите доступ к чату с авторами курса.
🔵 Будете получать все обновления курса, потому что он останется у вас навсегда.
2 месяца учёбы достаточно, чтобы стать мастером топовых нейросетей и увеличить производительность работы в 10 раз. А также — выделиться на рынке труда.
Май возможностей: каждую неделю разыгрываем 2 MacBook!
Получите скидку до 60% на обучение и шанс выиграть крутой ноутбук!
Подробности по ссылке: https://epic.st/9pETA?erid=2VtzqxWc1mn
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
⏳ Ограничение времени выполнения кода с signal
Когда нужно завершать долгие операции (например, при парсинге или работе с API), полезно уметь ставить таймаут на блок кода.
🎯 Итог
Модуль signal позволяет элегантно ограничивать время выполнения операций. Особенно полезен при работе с нестабильными внешними источниками или написании защищённых CLI-утилит. Работает только в UNIX-системах.
Когда нужно завершать долгие операции (например, при парсинге или работе с API), полезно уметь ставить таймаут на блок кода.
🎯 Итог
Модуль signal позволяет элегантно ограничивать время выполнения операций. Особенно полезен при работе с нестабильными внешними источниками или написании защищённых CLI-утилит. Работает только в UNIX-системах.
🧊 Глубокая заморозка объектов с types.MappingProxyType
Иногда нужно создать словарь, который нельзя изменить — например, для констант или конфигурации. Вместо копирования или заморозки вручную, можно использовать MappingProxyType.
🎯 Итог
MappingProxyType создаёт читаемую, но неизменяемую обёртку над словарём — отличный способ защитить данные от случайного изменения, особенно в конфигурациях и API-интерфейсах.
Иногда нужно создать словарь, который нельзя изменить — например, для констант или конфигурации. Вместо копирования или заморозки вручную, можно использовать MappingProxyType.
🎯 Итог
MappingProxyType создаёт читаемую, но неизменяемую обёртку над словарём — отличный способ защитить данные от случайного изменения, особенно в конфигурациях и API-интерфейсах.