Комментарии 32
Как учебное пособие или результат лабы - отлично (только добавьте py.typed!).
Для реальных задач - отказать:( уж очень много недочётов (например: вычитывает все данные в память, полно fullscan-операций, нет покрытия тестами - test_database.py явно не оно:), нет проверки заявленных версий питона через tox)
Для каких целей может понадобиться такая странная библиотека? Пример с парсингом не совсем корректный, потому что запись с помощью вашей библиотеки как минимум не параллелизуется.
А для каких задач подходит чистый модуль JSON? Он с коробки как бы не асинхронный. Хочу обратить внимание. Я вообще не выходил за пределы чистого JSON. Или вы будете утверждать что чистый JSON Python нельзя нигде использовать?
При чем здесь синхронный модуль json и параллелизация записи в базу? У вас тут не решена проблема гонок, как ваши парсеры будут одновременно писать в файл?
Понял о чем вы)
Уже выше писал по данному поводу. Если спрос на библиотеку будет - все можно улучшить и дописать. Библиотека же гвоздями не прибита к текущей версии)
Просто будет ли смысл, в целом, время тратить на это, если инструмент окажется никому не нужным. В этом вопрос.
Вот, к примеру. Даже на этот вариант было потрачено достаточно много времени. В целом код, описание и прочее. Уже сейчас публикация получила 2 диза и, насколько я понимаю, не последние.
Можно выделить пару дней. Заморочиться. Прописать в коде вообще все что тут вы и прочие комментаторы предложили, чтоб нарваться на очередной хейт. В чем смысл?)
Сейчас библитоеку стоит расценивать как проба пера - "нужен инструмент" или "не нужен". Лично я для больших парсеров в формате JSON использую MongoDB с библиотекой motor, но а для мелких парсеров и задач по взаимодействию с JSON на Python теперь буду использовать свою библиотеку.
При любом раскладе это удобнее чем чистый JSON и функционала больше. А под запрос от аудитории добавлю в библиотеку новые функции или допилю старые.
В этом и был мой изначальный вопрос, лично я не вижу проблем, которые решает эта библиотека. Вместо нее можно ограничиться одним контекстным менеджером, который будет открывать файл, преобразовывать в словарь и закрывать-записывать.
имхо, даже просто pydantic модель из JSON - и то лучше. Читается в пару строк кода, задаёт модель записи, записывается в общем-то тоже элементарно. И зачем тогда библиотека? Я вот тоже не понял, какие проблемы она решает.
К автору: "все можно улучшить" - с текстовым JSON файлом? Сомнительно. Даже просто частичное обновление сделать будет уже проблемой.
Скажу честно - не совсем понимаю зачем это на питоне. Но в JSе есть такая необходимость. Например есть такая база как NeDB - несмотря на то что она уже давно не разрабатывается, ее продалжают качать и качать. Потому что далеко не всегда нужна база уровня MySql или MongoDB. К сожалению я даже и не знаю сейчас активной библиотеки на JS которая бы развивалась в этом направлении. Последнее чем пользовался - LokiJS. Нужна она была мне для создания локальной базы для сверки с внешней Api подобной базой и выявления разницы между ними.
Спрос на такие базы не уменьшается, а вот по серьезному поддерживать их особо люди не хотят. Все таки сложное это дело.
Бывают разные задачи в Python и в их рамках часто приходится с JSON взаимодействовать. Как самый яркий пример - это разработка бэкенда для веб-прилождений на Python (FastApi, Flaskи Django). Всё общение по API идет в контексте JSON (как передача, так и обработка данных).
Ещё, по крайней мере в моей практике, часто приходится работать с готовыми JSON файламы.
Кроме того. Не зря же JSON встроенная библиотека)
А в чем отличие js от python в данном контексте? Речь же про js-бэкенд?
Разница в том, что JS может выполнятся на стороне браузера и такие базы работают в том числе и в браузере. JS для таких задач как ложка-вилка)
Ну если таким пользуются на питоне - ок.
Тогда и речь нужно вести о client-side базах и server-side, вопрос то не в языке. В браузере то у вас всегда есть IndexedDB (наверное я правильно понял что это, я довольно далек от фронта). А на сервере всегда и везде есть sqllite (и не только на сервере кстати), который уже и JSON довольно продолжительное время поддерживает.
Библиотека предполагает ETL-подход, но для неструктурированных данных кажется проще использовать ELT (Extract - Load - Transform), т.е. сохранить данные as is в какой-нибудь Postgres в поле с типом json, а потом уже обрабатывать это поле
Т.е. грубо говоря если с помощью библиотеки делаем парсинг json, а потом (как обычно бывает) туда попадают новые ключи \ уходят старые то мы на выходе получим некорректный json. В случае с ELT-подходом просто правим парсер (вместо перезагрузки данных за N-период + так же правки парсера)
Очередная статья от "Опытного Python-разработчика с многолетним стажем" (хотя странно было бы читать статьи по Python от человека, знакомым с ним менее года)
взаимодействием FastAPI и баз данных
Простите, что? FastAPI - роутер, а не ОРМ/драйвер к бд. Я даже не стану говорить, что это должны быть разные и абсолютно не знающие друг о друге компоненты системы, но до таких тем видимо ещё далеко
Допустим, вам нужно парсить большой объем товаров с интернет-магазина
Как это вообще относится к FastAPI? Я ничего не хочу сказать, но мне кажется, вы действительно несколько лет занимались парсингом и созданием ТГ ботов, а неделю назад узнали о существовании FastAPI и Docker
В целом, какой смысл писать данную библиотеку на Python и только для Python? Она же будет весьма медленной и прожерливой по памяти. Такие вещи реализуют на языках без рантайм примочек вроде интерпретации и gc, а затем через FFI используют где хотите, в то же самом Python.
P.s.: очевидный вопрос в стиле "зачем эта либа вообще нужна" задавать не буду, т.к. уже итак все поинтересовались. Может быть всё-таки вернётесь к парсингу инфы с маркетплейсов и ТГ ботам, а не будете продвигать никому не нужный модуль с несколькими CRUD-функциями под видом "классной и универсальной библиотеки". Я понимаю, вы вероятно работали все это время в сфере фриланса и привыкли рекламировать свои решения, какими на самом деле простыми и недалёкими они ни были
В вашем отзыве противоречия. Сначала вы говорите, что я знаком с Python меньше года. Буквально через пару предложений, что я несколько лет занимаюсь созданием ботов и парсингом. Это, по меньшей мере, странно.
Кроме того. Вы достаточно часто появляетесь под моими постами в комментариях. У вас ккакой-то нездоровый интерес к моей персоне? Занимайтесь, пожалуйста, своими вопросами. Надеюсь, что больше вас не увижу
Я знаю, что у вас проблемы, но дислексии не ожидал:
хотя странно было бы читать статьи по Python от человека, знакомым с ним менее года)
Где я здесь говорю, что вы знакомы с Python меньше года? Или вам везде все мерещится? Как например с тем, какая ваша либа - прорыв, а ваши статьи - просвещение
Кроме того. Вы достаточно часто появляетесь под моими постами в комментариях. У вас ккакой-то нездоровый интерес к моей персоне?
Хабр - не рекламная площадка своих услуг, тем более столь примитивных. А по сему есть комментарии, где читатели могут оставить свою критику и обсудить что-либо. Так что стоит прислушиваться к тому, что говорят люди в них, особенно если не только я это говорю.
Как я уже говорил, штамповать материал уровня Хауди Хо или Гоши Дударя и каждый день выпускать по статье, где идея высосана из пальца, а вода сгенерирована с помощью нейросети - это не уровень Хабра, а уровень для привлечения недалёких клиентов, и если вы так делаете, то прямо оскорбляете читателей статей!
Занимайтесь, пожалуйста, своими вопросами. Надеюсь, что больше вас не увижу
Вы даже свой комментарий заканчиваете так, словно общаетесь в торговой или бизнес-среде, о чем мне вообще говорить?
Я вам все сказал. Если вы продолжите мне тут написывать в комментариях это будет говорить не просто про "нездоровый интерес") Тут уже клиника скорее. Знаете. Вот эта вот неразделенная любовь. Ну или все прозаичнее - лично вы никому не интересны. И вот таким образом, как пятилетний ребенок, к себе внимание привлечь пытаетесь. Вот, посмотрите какой я классный)
По этому поводу вот что хочу сказать. Люди, которым есть чем заняться, не будут заходить под каждый второй пост неинтересного им автора и написывать не будут)
Повторюсь. Делом займитесь. Создайте классную программу, напишите приличную статью. Станьте полезным, а не просто человеком, который залетает тут и начинает в непонятную и плохо пахнующую субстанцию обмазывать все и всех. Вот, кармой займитесь своей не знаю, воздухом свежим подышите.
И давайте уже этот срачь в публичную плоскость выносить не будем. Хотите обсудить - пишите в личку. Люди тут информацию полезную найти хотят, а не увидеть очередного знатока с минусовым рейтингом и одним проектом за спиной.
Всего доброго.
Вы продолжаете сыпать красивыми речами, натягивая взятые с неба факты на ваши теории о том, что вокруг вас крутится весь Земной шар:
это будет говорить не просто про "нездоровый интерес") Тут уже клиника скорее. Знаете. Вот эта вот неразделенная любовь. Ну или все прозаичнее - лично вы никому не интересны
Вот тут то как раз всё прозаичнее: вам в лицо выдают поток критики, а вы ее в упор не видите, всячески игнорируете и также нелепо переходите на личности вместо того, чтобы ответить на вопросы.
А теперь пройдемся по реальным фактам, специально для дислексиков:
Вы проигнорировали 2 вопроса и 1 замечание. Но зато расписали свои фантазии о моих проблемах
Вы прочли неверно часть моего комментария и опять что-то надумали. На что я указал на вашу неточность! И это вы тоже проигнорировали
Все мои повторы о том, что Хабр - не площадка для продажи курсов и рекламы своей персоны (тем более с навыками заурядного джунишки) вы также проигнорировали, опять надумав себе, что если вам что-то пишут - значит это от “неразделенной любви”
И теперь я отвечу на оставшуюся критику в адрес моего мнения, как это должны были сделать и вы с моими комментариями (а не выдумывать несуществующие небылицы о человеке, который тратит время на то, чтобы отчистить площадку Хабра от таких посредсвенных пиарщиков себя):
Делом займитесь
Я работаю. И изучаю множество вещей кроме работы. И вынужден натыкаться на ваши детсадовские статьи, которые штампуете каждый день
Создайте классную программу, напишите приличную статью.
Я создал много классных программ, даже без учета того, чем я занимался на работах. Можете ознакомиться c моим профилем на гитхаб
По поводу статей: в отличии от вас я понимаю уровень, на котором должны быть статьи на Хабре. И подхожу к этому очень серьезно, и не штампую статьи из воздуха, как некоторые. Если вы зайдете в мой профиль здесь, то обнаружете заветную статью, к созданию которой я долго шел и над которой я кропотливо работал. Она получилась, вероятно, длинее, чем все ваши статьи вместе взятые (даже без учета нейросетевой воды в ваших статьях), но именно такие полноценные статьи, богато расскрывающие тематику, и должны быть. В конце концов, это статьи, а не ролики в тиктоке типо "пара фактов за одну минуту"
Станьте полезным, а не просто человеком, который залетает тут и начинает в непонятную и плохо пахнующую субстанцию обмазывать все и всех
Моя полезность заключается как раз в том, что я выдаю критику статьям, для этого комментарии и существуют. Хочу видеть Хабр с хорошими статьями, а не тем, каким он стал за последние годы из-за таких вот недалеких писак и инфоцыган с их курсами. Опять же, это не сугубо мое мнение, это мнение многих других сторожил данного просветительсокого портала.
То, что вы можете красиво говорить и генерировать воду нейросетью - это, наверно, хорошо, но на критику тоже надо уметь отвечать. Иначе ваши красивые слова и нагенеренная вода, по сути, ничего не стоят. А отвечать на критику, как на мою, так и на критику других, как можно заметить, вы не умеете
И давайте уже этот срачь в публичную плоскость выносить не будем. Хотите обсудить - пишите в личку
Зачем? Материал публичный - критика тоже должна быть публичной! Иначе смысл теряется.
Повторюсь: Хабр - открытая площадка, где люди деляться своими наработками и идеями, и как в любой другой научной среде, подвергаются критике. Успешная защита своей точки зрения доказывает её право на жизнь
Люди тут информацию полезную найти хотят
Выходит, вы всё-таки понимаете это! Тогда вопрос следующий: зачем вы пишите свои статьи, если они едва ли несут что-то полезное (опять же, не только я так считаю, но и многие другие комментаторы)
очередного знатока с минусовым рейтингом и одним проектом за спиной
Как я уже упомянал, Хабр в последние годы, к сожалению, превратился в площадку для рекламы себя, своих курсов или целых компаний. И люди, вроде вас, часто этим пользуются. Минусовый рейтинг обусловлен как раз тем, что под такими статьями я не пишу “О, какой классный контент, пишите больше, прашу-умоляю!”, а выдаю критику, на которую уже либо вы ответите складно и защитите свою работу перед всем Хабром, либо не защитите и покажите, что признаете наличие явных минусов в вашей работе.
И да, у меня не один проект за спиной, и вы бы поняли это по уровню моих вопросов (если бы их вообще читали, а не сразу строчили комментарии о том, что вас все любят)
Вы явно спутали комментарии Хабра с чатом Доты или фриланс-биржы, где сначала нужно написать о том, как хорошо вы знаете меня лично, а потом - "Всего доброго" или "Надеюсь, что вас больше не увижу"
Может дело не в Хабре, а в вас? Я просил перенести диалог в личку, но вы продолжаете сыпать тут простыни текста. Время на прочтение вашей заветной статьи, которую вы написали 7 января 12 минут. 70% моих статей длинее вашей заветной. Есть и такие что за 20 минут. Это вот вы к чему написали? Померяться длиной хотите?) Ну это точно не ко мне.
Извините, но я бы вам рекомендовал подтянуть знания, прежде чем писать статьи с ссылками на ваш тг канал «Легкий путь в Python». Прислушайтесь к критике выше. Хотел сам написать, но это уже сделали за меня
Смысл в том, что если пользователям нужен будет мой контент, то они будут подписываться и переходить в мой телеграмм канал. Если не нужен будет, то они пройдут мимо. Не больше и не меньше.
Смысл в том, что пользователь, особенно в начале пути, с большей вероятностью, не сможет отличить хорошие советы от вредных. По моему, вы не корректно относитесь к конструктивной критике, стараясь защищаться во что бы то ни было. Желаю вам, побольше разобрать "матчасть" и поднабраться опыта, компетенции, только после этого писать статьи с реально полезным контентом :)
Автор статьи лжец и обманщик. Вот и все. Либа - бесполезное дерьмо.
Открыл статью. Долистал до ссылки на репозиторий. Открыл файл с тестами. Не нашёл ни одного теста. До уровня библиотеки это не дотягивает.
Да ну что вы! Он же "Опытный Python-разработчик с многолетним стажем"!
Молодой человек, уймите вы уже свои таланты. Появление вашего логина в комментариях под моими публикациями уже начинает походить на параною. Вы мне не интересны и хватит тут привлекать мое внимание. Займитесь делом уже)
Ведете себя как брошеная девушка. Ходите тут и рассказываете на каждом углу как плохи мои публикации и про свою заветную публикацию ещё.
Да, с Python знаком 1 месяц. Не, вчера вот узнал и думаю, а почему бы не начать писать, а вы меня раскусили. Вывели на чистую воду. Вы победитель. Идите теперь дальше, к другим авторам и выводите их на чистую воду. Очень сильно надеюсь, что больше с вами не пересечемся.
Что только не напишешь чтобы продать своё личное наставничество.
Есть же tinydb с кучей модулей. Зачем заново все придумывать?
Новая библиотека для работы с JSON: json_db_lite