Zen of Python
18.8K subscribers
1.47K photos
202 videos
38 files
3.67K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Что проверить перед переходом на SQLAlchemy 2.1

Обновление зависимости может поменять драйвер подключения, даже если строка подключения осталась прежней.

В SQLAlchemy 2.1 адрес postgresql:// по умолчанию выбирает psycopg, а oracle:// — oracledb. Если проект рассчитывает на конкретный DBAPI, укажите его явно и проверьте совместимость.

Есть ещё два изменения: минимальная версия Python — 3.11, а greenlet больше не устанавливается автоматически. Для асинхронных возможностей используйте:

pip install "sqlalchemy[asyncio]"


Перед обновлением прогоните сценарии подключения, транзакций и загрузки связей. Проверьте окружение CI: старая установленная зависимость может скрыть то, что сломается при чистой установке.

#python #sqlalchemy
Forwarded from Типичный программист
Python обработал 7,6 ГБ JSON за 0,12 секунды

Здесь интересно, куда уходило время. Дэниел Лемир, исследователь производительности, взял 2,2 млн событий GitHub, чтобы посчитать открытые PR по языкам. А Python при обычном разборе создавал кучу словарей, списков и строк, которые для этой задачи вообще не нужны.

В эксперименте с fastsimdjson и lazy=True Python-объекты создаются только для запрошенных полей. Сборка Python без GIL позволяет обрабатывать события в 64 потоках внутри одного процесса. У каждого потока свои счётчики, в конце их складывают. Зачем собирать весь объект, если нужна только малая часть?

У Лемира получилось около 0,12 секунды. Стенд: два Xeon Gold 6548N, 64 ядра, free-threaded Python 3.14.6 и fastsimdjson 0.6.0. Все 7,6 ГБ уже распакованы в RAM, чтение с диска и распаковка в замер не входят. Это лучший из семи прогонов, одинаковую статистику сверили всеми методами.
Как сделать бэкап работающей SQLite через Python

Просто скопировать файл активной базы рискованно. Во время копирования страницы могут изменяться, а при WAL часть данных находится в отдельном журнале.

Python предоставляет доступ к SQLite Online Backup API через Connection.backup(). Метод вызывают у источника и передают ему соединение с приёмником:

import sqlite3
from contextlib import closing

with closing(sqlite3.connect("app.db")) as src:
with closing(sqlite3.connect("backup.db")) as dst:
src.backup(dst)


SQLite согласует копирование с работой базы. Получившаяся копия самостоятельна: следующие записи в исходник в неё не попадут.

Здесь closing нужен для закрытия соединений: обычный with connection управляет транзакцией, но не закрывает соединение. После бэкапа проверьте восстановление и чтение данных.

#python #sqlite
❤1
UTF-8 по умолчанию не перекодирует старые файлы

В Python 3.15 текстовый ввод-вывод по умолчанию использует UTF-8. Это убирает часть различий между платформами, но файл в CP1251 остаётся файлом в CP1251.

В руководстве по переходу предлагают сначала найти операции с неявной кодировкой:

python -X warn_default_encoding app.py


Предупреждения покажут выполненные вызовы, где кодировка не указана. Для остальных путей пригодится статическая проверка.

Указывайте encoding="utf-8" для UTF-8 и encoding="cp1251" для известных старых файлов. Если нужна именно кодировка локали пользователя, используйте encoding="locale".

Не добавляйте errors="ignore" ради исчезновения ошибки: так можно незаметно потерять символы. Перед обновлением проверьте реальные входные файлы, включая выгрузки из старых систем.

#python #файлы
Что делать с данными? 💬

Строить отчёты. А ещё, например:
✅находить закономерности в больших массивах;
⬜️предсказывать поведение пользователей;
⬜️строить рекомендательные системы;
⬜️обучать и улучшать ML-модели;
⬜️создавать продукты и помогать бизнесу расти.


В Школе аналитиков данных МТС учатся решать такие задачи на практике.
В программе — SQL и Python, математика и статистика, анализ данных, машинное обучение и большие данные, а также нейросети и рекомендательные системы.

Занятия ведут действующие эксперты Центра BigData MWS. Теория чередуется с практикой, а преподаватели дают обратную связь по работам и помогают отслеживать прогресс.

Это будет интересно:
➡️студентам последних курсов и выпускникам технических вузов
➡️алитикам данных, которые хотят погружаться в исследования
➡️ИТ-специалистам, которые хотят перейти в новое для себя направление


Обучение продлится 10 месяцев и будет полностью бесплатным. Заявки принимаем до 25 октября.

Отправить заявку ↗️
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1