Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
6
ChtoToTamNik
ChtoToTamNik
ИТ-проекты пикабушников
Серия Разработка логистической программы

Logistics_Analyzer расчет зон покрытия⁠⁠

19 часов назад

Мне показалось что в последнем посте Logistics_Analyzer "Что если?" и новые функции программы мною не до конца был раскрыт вообще весь смысл анализатора "Что если?", а так же данные были очень корявые и не точные. Сегодня я постараюсь объяснить более детально, наглядно и заодно расскажу о новой функции.

Для начала начнем с данных. Я переработал все данные, создал более грубую но работоспособную модель тестовых значений для программы. Ушел от глобализации на всей карте, в сторону "Меньше объектов, один город, при этом более верные данные".

Новая карта объектов:

Текущая заливка данных, один город и 34 объекта

Текущая заливка данных, один город и 34 объекта

Сама карта — та же самая, что и была ранее, просто вместо 118 объектов теперь их всего 34, и собраны в одном городе.

Всем объектам была присвоена одинаковая товарная матрица и примерно одинаковые продажи, разница только в том, что один магазин, например, продавал «Сковороды» и у него этот сегмент А, другой продавал холодильники, которые так же попадают в А сегмент, но сковороды у него в С.

Зон доставок я сделал 5 вариантов, т. е. одинаковые зоны будут у 6 объектов, но это не критично, даже хорошо для проведения анализа.

Основной объект который будет разобран в сегодняшнем обзоре

Основной объект который будет разобран в сегодняшнем обзоре

Возьмем за пример объект с кодом ST_MSK_004 (магазин «Таганская»).

У него есть своя зона доставок, которая сложилась исторически.

Историческая зона доставок

Историческая зона доставок

Примерно так видит зону доставок логист

Примерно так видит зону доставок логист

Мемом выше можно понять, что зона не оптимизирована. Почему этот 004 магазин доставляет в зоны где тоже есть магазины? Загадка, а впрочем, и нет. Это же тест-данные. Я предположил, что, например, есть один объект, у которого каким-то странным образом падала основная часть доставок, и он отдавал сам курьерку. При этом магазин стал слишком мало приносить прибыли, и аренда взлетела, надо закрыть его.

Переработанное окно анализа "Что если"

Переработанное окно анализа "Что если"

Немного переработал интерфейс, дизайн, добавил новые функции и пока что заглушки для будущих умных расчетов.

Выбираем объект 004, ставим учитывать ABC-анализ и анализировать влияние на доставку клиентам и запускаем расчет.

Самое долгое - это влияние на зонирование

Самое долгое - это влияние на зонирование

Пока грузиться процесс, опишу что такое "Влияние на доставку".

У компании Х есть магазин, который они хотят закрыть, надо понять визуально, какое покрытие и кому отдать кусок от «пирога». Вот это как раз и делает программа. И в этом процессе закрылась основная проблема, с которой я долго боролся, на скрине выше, где показана зона, есть маленькие зеленые точки, это исторические данные, куда были произведены отправки. На их основе программа и строит полигональную сетку для визуализации. А как быть с пустыми местами? Вот она, основная проблема. Чуть позже вернемся к этому.

Как раз расчет завершен, предлагаю посмотреть труды.

Окно товарных запасов

Окно товарных запасов

Окно товарных запасов - визуально на табличном примере показываем фактический остаток товара в магазине

Ближайшие объекты

Ближайшие объекты

Ближайшие объекты - показывает то куда можно переместить товар, какое расстояние, емкость и доступность

План перераспределения

План перераспределения

План перераспределения — это уже предлагаемые распределения остатков с закрываемого объекта на ближайшие по следующей логике:

  1. Проверяем товарную матрицу

  2. Проводим АВС анализ (в будущем добавлю и XYZ)

  3. Проверяем вместимость нового объекта

Если не подошло ни под одно действие, либо проверяем все найденные объекты в зоне, либо отправляем на склад, чуть-чуть логики с логов программы ниже:

Логи наверное скажут все за меня и гораздо больше)

Стоимость доставок

Стоимость доставок

Стоимость доставок - вообще должна считать по объему утилизации трака, сейчас как бы тоже (со скрипом) живой вариант, но есть уже накиданная логика, лежит под фичатоглом, надо проверять в будущем.

Влияние на регион - ничего интересного там нету, кейс без особенностей, программа говорит что все отлично


И вот она, та самая "Вишенка" на торте - влияние на доставку

Рассмотрим два типа карт: общая информация и данные о влиянии на время.

Информация о влиянии на время, как считает программа:

  1. Смотрит 3 точки из текущей зоны доставки по закрываемому объекту:

    1. Самая дальняя точка по километражу

    2. Средняя точка

    3. Ближняя точка
      2. Считает время от объекта до каждой из этих точек и берет среднее арифметическое значение

      Кластеризует текущую зону на подзоны для новых объектов и делает аналогичное, как в пункте 1+2, добавляя среднее по всем объектам.

Визуализация перераспределения зон доставки

Визуализация перераспределения зон доставки

Нажимая на "Синюю" кнопку открывается окно в котором при нажатии на пуск - происходит визуализация перераспределения зоны с учетом объектов и введенных параметров (Учет объектов вне зоны км). Состоит данный процесс из 5ти этапов.

  1. Показываем закрываемый объект

2. Показываем все объекты которые находятся внутри текущей зоны и внешние согласно параметра.

3. Показываем фактическую зону доставок

4. Делим зоны на кластеры. И вот тут самое интересное.

Минимальное приближение

Минимальное приближение

Среднее приближение

Среднее приближение

Как сказать программе: «Смотри, есть вот такая зона, в ней есть 10, 15 или 20 объектов, подели рисунок на пропорциональные части с учетом оптимальной логистики?» А ведь внутри родительского кластера есть пустые зоны, в которых исторически не было доставок, а мы все равно должны их учесть и распределить.

Долго я думал над этим процессом, множество раз переписывал код, удалял методы. Вроде работают, но программа не понимает, что я хочу от нее. Ну не может она разделить без вершин пустые зоны.

И я придумал. В один вечер я сидел в какой-то компьютерной игре и ставил метки на карте, тут меня и осенило. Добавить больше точек, но не реальных, не исторических, а виртуальные точки для наполнения родительского кластера. Сделать их невидимыми для пользователя, но видимыми для логики программы. Так получается, мы устраняем эти пробелы, и метод начинает определять зоны, при этом делая этот процесс с большей точностью.

Мы находим в начале объекты и рядом с объектами начинаем раскидывать точки с определенной плотностью.

Дальше мы показываем окончательный процесс (распределения кластеров и привязку их к другим объектам).

На примере одного из кластера. Есть магазин на Павелецкой, есть зона которая перейдет к нему.

Отдаляем карту и чисто визуально мы понимаем, да кластеризация прошла успешно.

Красным написано "Маг" т.е. "Магазин" что бы более наглядно было

Красным написано "Маг" т.е. "Магазин" что бы более наглядно было

Внешние магазины рядом с контуром

Внешние магазины рядом с контуром

Да и отдаленные магазины тоже правильно подхватили кластеры.

Какой же экстаз я словил когда руками проверил и убедился в том что да, все работает как и задумано. Как минимум этот процесс автоматизирован. Не надо теперь руками все это считать, собирать карты по крупицам. Работа которая занимает неделю а то и две может быть выполнена за 1 минуту. Это успех.


На моменте первой визуализации я думал: «Это успех», и лучше уже ничего не добавлять. Но потом пришла мысль, маленькая мысль, которая не давала покоя: «А что, если кому-то этого мало, а если надо показать визуально маршруты, точки из расчета?». Имея готовый скрипт JS и логику, мне просто потребовалось скопировать, вставить и дополнить первоначальный код.

Процесс анимирования занимает гораздо больше времени. Программе надо отправить API запрос, получить ответ, так для каждого объекта по 3 раза.

2025-12-15 16:08:02,800 - INFO - STDOUT - 🌍 Построение маршрута через OSRM (карта: yandex)

2025-12-15 16:08:02,800 - INFO - STDOUT - 🌐 OSRM API: попытка 1/2

2025-12-15 16:08:02,801 - DEBUG - urllib3.connectionpool - Starting new HTTP connection (1): 127.0.0.1:53913

2025-12-15 16:08:03,674 - DEBUG - urllib3.connectionpool - http://127.0.0.1:53913 "GET http://router.project-osrm.org/route/v1/driving/37.6215,55.7... HTTP/1.1" 200 682

2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Маршрут через OSRM: 0.9 км, 2 мин

2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 21 добавлена: 1 маршрутов, 10 точек полигона

2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 22: facility=True, polygon=9, points=0

2025-12-15 16:08:03,675 - INFO - STDOUT - ⚠️ Зона 22: нет точек доставки, добавляем без маршрутов

2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 22 добавлена: 0 маршрутов, 9 точек полигона

2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 23: facility=True, polygon=13, points=0

2025-12-15 16:08:03,675 - INFO - STDOUT - ⚠️ Зона 23: нет точек доставки, добавляем без маршрутов

2025-12-15 16:08:03,675 - INFO - STDOUT - ✅ Зона 23 добавлена: 0 маршрутов, 13 точек полигона

2025-12-15 16:08:03,675 - INFO - STDOUT - 🔍 Обработка зоны 24: facility=True, polygon=10, points=5

Лог работы построения маршрута.

Logistics_Analyzer - умеет работать с геодекодированием, но маршруты - извольте, я даже не знаю как их строить. Интересно было бы посмотреть как создается логика построения маршрута под капотом.

Итог:

Мы получаем кластер с тремя ключевыми точками и путями до них, включая полное описание маршрутов.

На третьем этапе программа последовательно демонстрирует каждый новый кластер и прокладывает маршруты (к сожалению, из-за ограничений медиа, я не могу приложить изображения).


Давайте подведем итоги кластеризации и перераспределения зон.

На мой взгляд, это успех. Конечно, есть некоторые недочеты, но они едва заметны и будут быстро исправлены. Логика работы выстроена, отчет динамичен. Теперь остается только проверить все на практике и собрать для него ОС от пользователей.

Есть план развития дальше, плюс устранение мелких недочетов. Первую бету версию планирую компилировать в начале марта 26г. Кому ее предлагать - это уже другой вопрос. Буду решать в момент возникновения.


В интерфейсе произошли некоторые изменения. Например, я перешел от скучной бежевой темы к более темным цветам. Часть стилей выделил в QSS и настроил их подключение в Main_window. Меню дашбордов стало напоминать Power BI с Excel, и были внесены другие мелкие правки.

Работаю над проектом по вечерам, уделяя этому 2-3 часа. Основные алгоритмы визуализации были написаны давно, но я долго не мог понять, в чем проблема. То данные распределялись неверно, то пробелы не учитывались. В начале реализации функции был у меня дата-файл, где зоны были более реалистичными, чем сейчас. При перераспределении их покрытие составляло всего 30%. То что "Ну очевидно можно сделать вот так" она делала "Тебе очевидно, а мне нет. Хочешь - делай сам".


Всем спасибо за прочтение. Пишите комментарии кто и что думает. Задавайте вопросы - отвечу)

Показать полностью 25
Python Проект Автоматизация Программа Логистика Бета-версия Длиннопост
3
11
Pazitron
Pazitron
Программирование на python

Генератор 3D моделей с помощью Shap-e. Text-to-3D⁠⁠

21 час назад

Shap-e представляет собой генеративную нейросеть для Python, для генерации 3D моделей по тексту.

Пример кода приложения, можно и без оболочки.

Пример кода приложения, можно и без оболочки.

GUI приложение, с выбором количества генераций за 1 раз и выбором формата сохранения по указанному пути.

GUI приложение, с выбором количества генераций за 1 раз и выбором формата сохранения по указанному пути.

Процесс генерации. Генерация производилась на видеокарте Nvidia 3060 12Gb, довольно шустро не более 5 минут на 4 варианта модели.

Процесс генерации. Генерация производилась на видеокарте Nvidia 3060 12Gb, довольно шустро не более 5 минут на 4 варианта модели.

Первый вариант

Первый вариант

Второй вариант

Второй вариант

Третий вариант

Третий вариант

Четвёртый вариант

Четвёртый вариант

Закинул в слайсер посмотреть что там по итогу.

Закинул в слайсер посмотреть что там по итогу.

Модель внутри имеет мешанину с пустотами и висячими элементами, что видно при нарезке, если даже вы ставите 100% заполнение.

Модель внутри имеет мешанину с пустотами и висячими элементами, что видно при нарезке, если даже вы ставите 100% заполнение.

Некоторые варианты генераций выглядят не плохо, как эта лисичка.

Некоторые варианты генераций выглядят не плохо, как эта лисичка.

В целом, модельки можно починить в Meshmixer, использовать их, как основу для дальнейшего улучшения, придания нужного вида.

Показать полностью 9
[моё] Python Программирование IT Программист Нейронные сети Программа Тестирование Длиннопост
0
3
8088
8088

Зумер, купи собачку или заведи друга⁠⁠

1 день назад

Зумеры думают, что быть эмоциональным в чатах и документах на работе — это уникально.

Нет. Предыдущие поколения тоже выплёскивали эмоции.


Но кто сразу переключался на язык фактов — эти люди сделали карьеру, построили успешные компании, их идеи доходили до цели, а не терялись в бурном потоке.

Зумеры же используют новые каналы как реку эмоций: чаты, документацию, таски — поток бурлит, волнует, захлёстывает смысл.


И это их погубит.

Есть компании, которые не берут зумеров, потому что не хотят превращать рабочие инструменты в психотерапию.

Тот, кто понимает простую вещь:

  • поток эмоций = река хаоса,

  • канал фактов = дамба, структура, русло,

  • понижение энтропии = управление потоком = рост по карьерной лестнице,

— тот становится архитектором реки, получает доверие, решения принимаются быстрее, ошибки падают, а продвижение приходит раньше, чем у остальных.

Эмоции в работе нужны. Но не там, где решаются задачи.


Если хочешь строить карьеру — превращай бурный поток в канал. Поток оставь на вечер, другу или собаке.

Показать полностью
[моё] IT Удаленная работа Программирование Совершенство Будущее Поколение Программист Python Telegram (ссылка) Текст
2
CrazyCraftSochi
CrazyCraftSochi
Лига 3D-принтеров

Научно-исследовательский проект «Сообразительный человек»⁠⁠

1 день назад

Лаборатория 3D Сочи запускает открытый проект для всех, кто хочет творить, исследовать и учить! Мы создаем библиотеку 3D моделей познавательных механизмов для учебных стендов в школах и вузах.

Суть проекта: Создать рабочую и технологичную 3D модель кинематического механизма (например, как в прикрепленном видео или подобного) для образовательных целей.

Кому это интересно?

· Студентам и школьникам, знакомым с 3D моделированием (формат STL).

· Семьям — отличный повод для совместного проекта детей и родителей.

· Всем энтузиастам 3D печати, кто хочет, чтобы их творение принесло практическую пользу образованию.

Что нужно сделать?

1. Смоделировать механизм в любой 3D программе.

2. Подготовить к печати с минимумом поддержек (а если без них и работает — вы гений и наш лидер!).

3. Прислать нам:

· Файл модели (STL).

· 2-3 скриншота процесса моделирования или слайсинга с вашими короткими комментариями (как вы решали сложные моменты).

· Пояснения по работе механизма (это важно для учебных целей!).

· Видео сборки/работы модели — приветствуется!

· Можно с логотипом или авторской подписью, а можно участвовать анонимно.

Технический бонус: Все модели будут физически распечатаны на FDM-принтерах (Elegoo, Picasso, Anycubic, Bambulab), чтобы проверить их в реальности.

Что получите вы?

· Авторы лучших моделей будут отмечены в наших публикациях.

· Все работы будут представлены в фото- и видеоформате с указанием авторства (если не анонимно) в группе Лаборатории 3D Сочи (https://vk.com/sochi3d)

· Трансляция лучших работ на информационном канале #СочиВКультуре.

· Участие в создании реального образовательного контента!

Главный критерий — познавательность! Чем нагляднее, интереснее и технологичнее будет ваша модель и пояснения к ней, тем лучше.

Давайте вместе наполним лаборатории и классы умными механизмами!

Перейти к видео

3D модели присылайте на почту lab3dsochi.mail.ru

Если досмотрел до сюда, то пожалуйста для статистики нажми плюс если будешь участвовать и минус если не примешь участие. Этот пост не для количества плюсов, а для подсчета реальной статистики, так что ставьте плюс или минус честно

Показать полностью 1
3D моделирование 3D печать 3D Нейронные сети Python Blender 3D принтер Компьютерная графика Digital ЧПУ Видео ВКонтакте (ссылка)
17
3
K0T0FEICH
K0T0FEICH
Очумелые ручки
Серия Мои поделки

Pikabu Avatar Maker (PAM)⁠⁠

1 день назад

🎯 Что это?

Программа для создания идеально подогнанных аватарки и фона профиля для сайта Pikabu.ru. Загружаете одно изображение — получаете готовый набор файлов с правильными размерами.

Сделал это на Питоне с помощью ЧатаЖипити. Просто мне лень было качать фотошоп -_-

✨ Возможности

  • Фон профиля — 700×140 пикселей (JPG)

  • Круглая аватарка — 128×128 пикселей с прозрачным фоном (PNG)

  • Вертикальное смещение — ползунок для точной настройки позиции

  • Светлая/тёмная тема интерфейса

  • Живой предпросмотр — видите результат до сохранения

  • Белая обводка аватара (опционально)


📥 Установка

Шаг 1. Установите Python 3.10+

Скачайте с python.org

⚠️ При установке обязательно

отметьте галочку "Add Python to PATH"


Шаг 2. Установите библиотеку Pillow

Откройте терминал и выполните:

Windows (cmd или PowerShell):

py -m pip install Pillow

Альтернативные варианты (если не сработало):

py -3 -m pip install Pillow

python -m pip install Pillow

pip install Pillow --user

Linux / macOS:

pip3 install Pillow


Шаг 3. Установка кода | Crtl C + Ctrl V

Далее создайте файл с расширением .py назовите как хотите, откройте через блокнот
и скопируйте это (ВИРУСОВ ТАМ НЕТ, ЭТО ИСХОДНЫЙ КОД)

https://pastebin.com/vXuxHXZ0

в ваш файл и нажмите сохранить, после чего просто нажимаете на этот файл и всё.


Шаг 4. Куда сохраняется все это дело

Файлы сохраняются в ту же папку, где находится исходное изображение:

💡 Префикс pikabu

можно изменить в настройках программы


Если найдете баг, исправляйте сами, через чатжпти. Я лишь поделился своей наработкой.

З.Ы

Уважаемые @moderator, программа с вашим сайтом ни как не взаимодействует!
Только режет картинки и все!

Показать полностью 2
[моё] Windows Linux Код Python Аватарка Фон Программирование Программа
0
3
8088
8088
Юмор для всех и каждого
Серия АйТи на удаленке

Захват мира злым ИИ опять откладывается )⁠⁠

1 день назад
Пить нельзя

Пить нельзя

[моё] Юмор IT Удаленная работа Истории из жизни Программирование Нейронные сети IT юмор Python Программист Telegram (ссылка)
3
3
maximonchik78
maximonchik78

Videosaver v9 - Кто знает, тот в курсе )⁠⁠

3 дня назад


правок было овер много и провайдерские и с той стороны запреты, сейчас можно просто правой тыкнуть, копировать url вставить, либо, если одно видео на страничке вообще вставить url странички, там , где адресная строка правой тык, скопировать и в проге тык ЛЕВОЙ сначала, потом вставить. код максимально чистый, исходник не буду высылать, его уже пытаются использовать в коммерческих целях ))
в обшем создаём папку без кириллицы, закидываем туда файлик, yt-dlp он проверит и скачает последнюю версию сам, если не нужно выше 1080 в принципе всё, если нужно 2-4-8к, скачиваем ffbpeg + ffprobe, ложим рядышком. тупо екзешник, тем кто ставил рандомные патчи для майнкрафта можно вообще не отвечать, как я думаю.
прога не обходит замедленные сайты, это качалка контента.

https://disk.yandex.ru/d/Dk6PZ0XV2jaZ8Q

Videosaver v9 - Кто знает, тот в курсе )

из разных источников

Показать полностью 1
[моё] YouTube Видео ВК Загрузка файлов Python Текст
1
5
Jelizaveta

Как экспортировать данные из базы данных в Excel с помощью Python⁠⁠

4 дня назад

Экспорт данных из базы данных в Excel — это общая задача для разработчиков, которым необходимо анализировать или составлять отчеты о данных. В этой статье мы продемонстрируем, как использовать Free Spire.XLS для Python, библиотеку, которая позволяет создавать и манипулировать файлами Excel без необходимости установки Microsoft Excel. Мы рассмотрим настройку вашей среды, подключение к базе данных MySQL и экспорт данных в файл Excel.

Что такое Free Spire.XLS для Python

Spire.XLS для Python — это мощная библиотека, позволяющая разработчикам создавать, читать и манипулировать файлами Excel в различных форматах без необходимости установки Microsoft Excel. Библиотека поддерживает операции, такие как чтение и запись данных ячеек, форматирование и создание диаграмм.

Настройка вашей среды

Перед тем как погрузиться в код, необходимо правильно настроить вашу среду разработки. Вот шаги, чтобы начать:

1. Установите Python: Убедитесь, что Python установлен на вашем компьютере. Вы можете скачать его с официального сайта Python.

2. Установите необходимые библиотеки: Вам нужно установить библиотеку Spire.XLS и соединитель MySQL. Используйте следующие команды в терминале или командной строке:

pip install spire.xls.free

pip install mysql-connector-python

3. Настройте MySQL: Если вы еще не сделали этого, установите MySQL на вашем компьютере. Вы можете скачать его с официального сайта MySQL. После установки создайте базу данных для работы. Вы можете сделать это с помощью клиента MySQL, такого как MySQL Workbench, или через командную строку:

CREATEDATABASE excel_db;

Теперь, когда ваша среда настроена, мы можем перейти к подключению к базе данных MySQL.

Подключение к базе данных MySQL

Чтобы взаимодействовать с базой данных MySQL, вам необходимо установить соединение. Следующий код показывает, как это сделать:

import mysql.connector

# Установите соединение с базой данных MySQL

connection = mysql.connector.connect(

host="localhost",

user="your_username", # Замените на ваше имя пользователя MySQL

password="your_password", # Замените на ваш пароль MySQL

database="your_database"# Замените на имя вашей базы данных

)

cursor = connection.cursor()

Экспорт данных из базы данных в Excel

Шаг 1. Извлечение данных из базы данных

Чтобы экспортировать данные из MySQL в Excel, вам сначала нужно извлечь их. Вот как получить имена столбцов и данные конкретной таблицы в вашей базе данных:

# Получите имена столбцов

cursor.execute("SHOW COLUMNS FROM table_name")

column_names = [column[0] for column in cursor.fetchall()]

# Получите данные

cursor.execute("SELECT * FROM table_name")

data = cursor.fetchall()

Шаг 2. Запись данных в Excel

Далее вы запишите извлеченные данные в файл Excel с помощью Spire.XLS. Вот как это сделать:

from spire.xls import *

from spire.xls.common import *

# Создайте объект курсора

cursor = connection.cursor()

# Создайте объект Workbook

workbook = Workbook()

# Удалите стандартные таблицы

workbook.Worksheets.Clear()

# Добавьте таблицу и назовите ее

worksheet = workbook.Worksheets.Add("FromDatabase")

# Запишите имена столбцов в таблицу Excel

for col_index, column_name inenumerate(column_names, start=1):

worksheet.SetValue(1, col_index, column_name)

# Запишите данные в таблицу Excel

for row_index, row inenumerate(data, start=2):

for col_index, value inenumerate(row, start=1):

worksheet.SetValue(row_index, col_index, str(value))

# Сохраните рабочую книгу в файл Excel

workbook.SaveToFile("output.xlsx")

Шаг 3. Настройка вывода в Excel

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

# Сделайте заголовок жирным

worksheet.Rows[0].Style.Font.IsBold = True

# Установите ширину столбцов и высоту строк

worksheet.AllocatedRange.ColumnWidth = 10

worksheet.AllocatedRange.RowHeight = 15

Полный код для экспорта данных из базы данных в Excel с помощью Python выглядит следующим образом:

from spire.xls import *

from spire.xls.common import *

import mysql.connector

# Установите соединение с базой данных MySQL

connection = mysql.connector.connect(

host="localhost",

user="root",

password="admin",

database="excel_db"

)

# Создайте объект курсора

cursor = connection.cursor()

# Получите имена столбцов

cursor.execute("SHOW COLUMNS FROM office_cost")

column_names = [column[0] for column in cursor.fetchall()]

# Получите данные

cursor.execute("SELECT * FROM office_cost")

data = cursor.fetchall()

# Создайте объект Workbook

workbook = Workbook()

# Удалите стандартные таблицы

workbook.Worksheets.Clear()

# Добавьте таблицу и назовите ее

worksheet = workbook.Worksheets.Add("FromDatabase")

# Запишите имена столбцов в таблицу Excel

for col_index, column_name inenumerate(column_names, start=1):

worksheet.SetValue(1, col_index, column_name)

# Запишите данные в таблицу Excel

for row_index, row inenumerate(data, start=2):

for col_index, value inenumerate(row, start=1):

worksheet.SetValue(row_index, col_index, str(value))

# Установите ширину столбцов и высоту строк

worksheet.AllocatedRange.ColumnWidth = 10

worksheet.SetColumnWidth(2, 15)

worksheet.AllocatedRange.RowHeight = 15

# Установите выравнивание

worksheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Left

# Установите стиль шрифта

worksheet.Rows[0].Style.Font.IsBold = True

# Сохраните рабочую книгу в файл Excel

workbook.SaveToFile("output/DatabaseToExcel.xlsx")

# Закройте курсор и соединение с базой данных

cursor.close()

connection.close()

Как экспортировать данные из базы данных в Excel с помощью Python

Вывод:

В этой статье мы прошли процесс экспорта данных из базы данных MySQL в файл Excel с помощью Spire.XLS для Python. Мы начали с настройки среды, включая установку Python, необходимых библиотек и MySQL. Затем мы рассмотрели подключение к базе данных, извлечение данных и запись их в рабочую книгу Excel. Наконец, мы обсудили настройку вывода для улучшения читаемости. Следуя этим шагам, вы можете упростить процесс экспорта данных с помощью Python.

Показать полностью 1
Python Microsoft Excel Длиннопост
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии