🕓 Автоматическая метка времени при добавлении записей в БД
В каждой модели часто нужны поля created_at и updated_at. Заполнять их вручную при каждом INSERT и UPDATE — лишняя рутина.
В SQLAlchemy это можно автоматизировать:
Теперь база данных сама проставит время создания записи, а при её изменении
💡 Такой подход особенно удобен для моделей, где важно отслеживать историю изменений: пользователи, заказы, задачи, логи и т. д.
✅ Мы в Max – подписывайся
В каждой модели часто нужны поля created_at и updated_at. Заполнять их вручную при каждом INSERT и UPDATE — лишняя рутина.
В SQLAlchemy это можно автоматизировать:
from sqlalchemy import Column, DateTime, func
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column("id", primary_key=True)
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
Теперь база данных сама проставит время создания записи, а при её изменении
updated_at получит новое значение.💡 Такой подход особенно удобен для моделей, где важно отслеживать историю изменений: пользователи, заказы, задачи, логи и т. д.
✅ Мы в Max – подписывайся
❤3
☝🏼 Удобное логирование запросов в консоль
Когда приложение растет,
В Python встроен отличный модуль
Вместо стандартного вывода настроим базовую конфигурацию:
💡Заменяй
✅ Мы в Max – подписывайся
Когда приложение растет,
print() для отладки уже перестает справляться — нам нужно полноценное логирование. В Python встроен отличный модуль
logging, который позволяет сделать вывод информации красивым и гибким.Вместо стандартного вывода настроим базовую конфигурацию:
import logging
# Настройка логирования
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
logging.info("Приложение запущено ✅")
logging.warning("Предупреждение: что-то не так!")
logging.error("Ошибка: соединение потеряно 🚨")
💡Заменяй
print() на logging — так ты получишь более наглядный, управляемый и профессиональный вывод в консоли.✅ Мы в Max – подписывайся
👍1
🔥Мгновенное объединение сотен CSV-файлов
Устали вручную склеивать данные из разных CSV? Этот лаконичный скрипт сделает всю работу за вас, создавая единый DataFrame из всех файлов в папке.
Добавьте ignore_index=True чтобы переиндексировать строки и избежать дублирования индексов. Для больших файлов используйте параметр chunksize в pd.read_csv() для экономии памяти.
Идеально для подготовки данных перед анализом, обработки логов или консолидации отчетов.
✅ Мы в Max – подписывайся
Устали вручную склеивать данные из разных CSV? Этот лаконичный скрипт сделает всю работу за вас, создавая единый DataFrame из всех файлов в папке.
import pandas as pd
import glob
path = "path/to/csv/files/"
all_files = glob.glob(path + "*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)
print(f"Объединено {len(all_files)} файлов")
print(f"Размер итогового DataFrame: {df.shape}")
Добавьте ignore_index=True чтобы переиндексировать строки и избежать дублирования индексов. Для больших файлов используйте параметр chunksize в pd.read_csv() для экономии памяти.
Идеально для подготовки данных перед анализом, обработки логов или консолидации отчетов.
✅ Мы в Max – подписывайся
🔥2❤1
🟨 История браузера в Python
Нужно получить историю посещённых сайтов программно? Для этого есть библиотека browser-history.
Она умеет извлекать историю посещений из популярных браузеров, а также экспериментально работать с закладками.
Установка:
Простой пример:
На выходе получаем пары дата/время + URL, которые можно дальше анализировать, фильтровать или сохранять в файл.
⚠️ Библиотека работает с локальными данными браузеров, поэтому доступ к истории зависит от ОС, браузера и его настроек.
✅ Мы в Max – подписывайся
Нужно получить историю посещённых сайтов программно? Для этого есть библиотека browser-history.
Она умеет извлекать историю посещений из популярных браузеров, а также экспериментально работать с закладками.
Установка:
pip install browser-history
Простой пример:
from browser_history import get_history
# Получаем историю
history = get_history().histories
for date, url in history:
print(date, url)
На выходе получаем пары дата/время + URL, которые можно дальше анализировать, фильтровать или сохранять в файл.
⚠️ Библиотека работает с локальными данными браузеров, поэтому доступ к истории зависит от ОС, браузера и его настроек.
✅ Мы в Max – подписывайся
❤1🔥1
⛔️ Как красиво игнорировать ошибки в Python
Иногда исключение может возникнуть, но отдельно обрабатывать его нет необходимости. Например, файл может отсутствовать, и это не должно останавливать программу.
Если файл не найден, FileNotFoundError будет проигнорирован, а программа продолжит выполнение.
❗️ Используйте suppress только для ожидаемых и безопасных исключений — иначе можно скрыть настоящую ошибку.
✅ Мы в Max – подписывайся
Иногда исключение может возникнуть, но отдельно обрабатывать его нет необходимости. Например, файл может отсутствовать, и это не должно останавливать программу.
from contextlib import suppress
with suppress(FileNotFoundError):
open("nonexistent.txt")
Если файл не найден, FileNotFoundError будет проигнорирован, а программа продолжит выполнение.
❗️ Используйте suppress только для ожидаемых и безопасных исключений — иначе можно скрыть настоящую ошибку.
✅ Мы в Max – подписывайся
👍5
⌨️ Большая подборка тестовых заданий для IT
Здесь собраны реальные задачи от компаний для программистов, тестировщиков и других айтишников.
Особенно здорово раздел по Python — можно и к собесу подготовиться, и просто порешать для себя.
🌐 Ссылка
Всё на русском, много практики.
✅ Мы в Max – подписывайся
Здесь собраны реальные задачи от компаний для программистов, тестировщиков и других айтишников.
Особенно здорово раздел по Python — можно и к собесу подготовиться, и просто порешать для себя.
🌐 Ссылка
Всё на русском, много практики.
✅ Мы в Max – подписывайся
🔥1
🆘 Когда данных слишком много
Нужно найти дубликаты в логах, сравнить большие тексты или посчитать уникальных пользователей, не загружая миллионы записей в память?
Datasketch использует вероятностные алгоритмы, которые позволяют анализировать большие объёмы данных с минимальными затратами памяти и времени.
Установка:
⚙️ Документация
Полезный инструмент для дедубликации, анализа логов и потоковых данных.
✅ Мы в Max – подписывайся
Нужно найти дубликаты в логах, сравнить большие тексты или посчитать уникальных пользователей, не загружая миллионы записей в память?
Datasketch использует вероятностные алгоритмы, которые позволяют анализировать большие объёмы данных с минимальными затратами памяти и времени.
Установка:
pip install datasketch
⚙️ Документация
Полезный инструмент для дедубликации, анализа логов и потоковых данных.
✅ Мы в Max – подписывайся
👍2
🔥 ТОП-5 советов Junior-разработчику от Senior’а
💡Главное: Чем чище код сейчас — тем меньше «костылей» потом!
✅ Мы в Max – подписывайся
Избегай дублирования кода
🔸 Выноси повторяющуюся логику в функции.
Пиши понятный код
🔸 Именуй переменные осмысленно, избегай «магических чисел».
Тестируй граничные случаи
🔸 Проверяй, как код поведёт себя при нулях, пустых строках и крайних значениях.
Оптимизируй с первого раза
🔸 Используй встроенные методы (join(), filter()) вместо «велосипедов».
Учись на Code Review
🔸 Принимай критику, задавай вопросы и разбирай чужой код.
💡Главное: Чем чище код сейчас — тем меньше «костылей» потом!
✅ Мы в Max – подписывайся
👍1
⌨️ Отслеживаем нажатия клавиш в Python
Нужно реагировать на нажатия клавиш или их комбинации прямо из Python?
Библиотека
Установка:
Например, можно отследить нажатие
⚠️ На Linux библиотеке могут потребоваться права администратора.
✅ Мы в Max – подписывайся
Нужно реагировать на нажатия клавиш или их комбинации прямо из Python?
Библиотека
keyboard позволяет перехватывать клавиатурные события и запускать нужный код.Установка:
pip install keyboard
Например, можно отследить нажатие
Esc:import keyboard
keyboard.wait("esc")
print("Esc нажата")
⚠️ На Linux библиотеке могут потребоваться права администратора.
✅ Мы в Max – подписывайся
👍1
⌨️ Продвинутое использование декораторов
В этой статье мы разберем сложные, но практичные примеры использования декораторов в Python. Рассмотрим регистрацию объектов, вложенные декораторы, декорирование классов, работу с методами и сигнатурами функций, а также реализацию декораторов как классов.
📄 Читать
Статья будет полезна разработчикам, которые хотят глубже понять механику декораторов и применять их в реальных проектах.
✅ Мы в Max – подписывайся
В этой статье мы разберем сложные, но практичные примеры использования декораторов в Python. Рассмотрим регистрацию объектов, вложенные декораторы, декорирование классов, работу с методами и сигнатурами функций, а также реализацию декораторов как классов.
Особое внимание уделено особенностям декорирования методов классов и созданию универсальных декораторов через наследование.
📄 Читать
Статья будет полезна разработчикам, которые хотят глубже понять механику декораторов и применять их в реальных проектах.
✅ Мы в Max – подписывайся
👀2
🐌 Что тормозит ваш Python-код?
Если программа работает медленно, не всегда понятно, где именно она теряет время.
PyInstrument помогает быстро разобраться: он показывает, какие функции и участки кода выполняются дольше всего.
Установить библиотеку можно так:
Затем запустите профилирование из терминала:
После этого PyInstrument покажет отчёт, по которому будет проще найти узкие места в коде.
⚙️ Документация
✅ Мы в Max – подписывайся
Если программа работает медленно, не всегда понятно, где именно она теряет время.
PyInstrument помогает быстро разобраться: он показывает, какие функции и участки кода выполняются дольше всего.
Установить библиотеку можно так:
pip install pyinstrument
Затем запустите профилирование из терминала:
pyinstrument app.py
После этого PyInstrument покажет отчёт, по которому будет проще найти узкие места в коде.
⚙️ Документация
✅ Мы в Max – подписывайся
❤1🔥1
❗️Python 3.15 почти готов к релизу
Финальный Release Candidate уже вышел, а стабильный Python 3.15 ожидается 1 октября.
В этот раз акцент не только на синтаксисе.
Также в Python 3.15 UTF-8 становится кодировкой по умолчанию, а некоторые изменения затрагивают типизацию, C API и free-threading.
⚠️ RC уже максимально близок к финальной версии, поэтому самое время проверить свои библиотеки и проекты на совместимость с Python 3.15. (Python.org)
✅ Мы в Max – подписывайся
Финальный Release Candidate уже вышел, а стабильный Python 3.15 ожидается 1 октября.
В этот раз акцент не только на синтаксисе.
Разработчики заметно поработали над производительностью и инструментами: улучшили JIT, добавили явные ленивые импорты, новый frozendict, отдельный пакет для профилирования и улучшили сообщения об ошибках.
Также в Python 3.15 UTF-8 становится кодировкой по умолчанию, а некоторые изменения затрагивают типизацию, C API и free-threading.
⚠️ RC уже максимально близок к финальной версии, поэтому самое время проверить свои библиотеки и проекты на совместимость с Python 3.15. (Python.org)
✅ Мы в Max – подписывайся
🔥2
🐼 Pandas — шпаргалка, которая всегда пригодится
На картинке — ещё больше полезных методов для загрузки, анализа, фильтрации и обработки данных.
Сохрани, чтобы не искать каждый раз.
✅ Мы в Max – подписывайся
Несколько методов, которые стоит знать:
pd.read_csv() — загрузить CSV
df.head() — посмотреть первые строкиdf.info() — узнать структуру данных
df.dropna() — убрать пропуски
df.groupby() — сгруппировать данные
df.merge() — объединить таблицы
На картинке — ещё больше полезных методов для загрузки, анализа, фильтрации и обработки данных.
Сохрани, чтобы не искать каждый раз.
✅ Мы в Max – подписывайся
👍3
🐍 Python 3.9. Всё, приехали
Вышел pip 26.1.
Главное: Python 3.9 больше не поддерживается. Для новой версии нужен Python 3.10+.
Обновить:
Ещё добавили экспериментальный
✅ Мы в Max – подписывайся
Вышел pip 26.1.
Главное: Python 3.9 больше не поддерживается. Для новой версии нужен Python 3.10+.
Обновить:
python -m pip install -U pip
Ещё добавили экспериментальный
pylock.toml и немного прокачали работу pip.✅ Мы в Max – подписывайся
👍3
🔻Есть текст. Нужно достать из него самое важное. Без ручной обработки.
Например, из статьи нужно найти людей, компании и даты.
С
Получаем структурированные данные вместо простыни текста.
Установка:
💡
✅ Мы в Max – подписывайся
Например, из статьи нужно найти людей, компании и даты.
С
LangExtract можно просто описать, что искать, а библиотека с помощью LLM сама найдёт нужные фрагменты и свяжет их с исходным текстом.import langextract as lx
result = lx.extract(
text_or_documents=text,
prompt_description="Найди людей, компании и даты",
model_id="gemini-3.5-flash"
)
Получаем структурированные данные вместо простыни текста.
Установка:
pip install langextract
💡
LangExtract умеет работать с длинными документами, облачными и локальными моделями, а ещё визуально показывает, где именно в тексте найден каждый результат.✅ Мы в Max – подписывайся
👍3