Tishka17
Эм, если это одна библиотека, почему они прям сразу не лежат в одной папке?
paulwinex
нет конечно, разные
paulwinex
это модули для одного движка
Ringо
нужно для организации файлов в библиотеке и для удобных импортов
Сделать враппер, через который импортируются модули, а то как они на фс лежат, вообще не разраба ума дело :D
Bekbolot
Всем привет. Хотел построить restful api используя flask, sqlalchemy, postgresql. Нужно сохранить JSON тип в базу данных (model: NCUsers, column: last_attempt, attempts). Здесь моя репо (https://github.com/tabekg/vv). Пожалуйста помогите. PS: я новичок)
Tishka17
нет конечно, разные
Так это разные библиотеки или одна? Если разные, почему они должны быть в одном неймспейсе. Если одна - почему ставятся независимо?
Tishka17
нужно для организации файлов в библиотеке и для удобных импортов
Немного уточню: не надо все файлы скидывать в одну папку. Ты можешь сделать два подпакета в рамках одного, соотвеующим образом положив файлы
Tishka17
Сделать враппер, через который импортируются модули, а то как они на фс лежат, вообще не разраба ума дело :D
Ну вообще у пакета есть инит, который уже это делает. Но для двух пакетов так без третьего нельзя
Tishka17
ЧЗХ?
Tishka17
это разные подпакеты конечно. нету файлов в куче
Это просто подпакеты или ты их ставить независимо хочешь?
paulwinex
я могу кончено уточнение написать но установка с пеймспейсами это нормальная практика
paulwinex
Это просто подпакеты или ты их ставить независимо хочешь?
это отдельные репозитории. неймспейсами я хочу объеденить их по смыслу. и хранилище логичное и импорт удобный.
paulwinex
вот примерчик, некий проект разделенный на разные репозитории которые ставятся в единый неймспейс https://github.com/pyQode
Tishka17
Всем привет. Хотел построить restful api используя flask, sqlalchemy, postgresql. Нужно сохранить JSON тип в базу данных (model: NCUsers, column: last_attempt, attempts). Здесь моя репо (https://github.com/tabekg/vv). Пожалуйста помогите. PS: я новичок)
m = getattr(__import__('apis.{}.{}'.format(version, path), fromlist=['']), name) Не надо так, это какая-то неподдерживаемая магическая хрень, находящаяся на грани дыры в безопасности
paulwinex
Репозитории? Гитовые?
не важно, они питонские. ну пока да, гитовые
Bekbolot
Где эту ошибку видишь?
apis/v1/user.py если делаем запрос api/v1/user.register там добавляет запись в бд
paulwinex
питонские модули в репозиториях. пока на гите, да
paulwinex
хорошо бы чтобы так и осталось но может потом меркуриал прикручу
paulwinex
собсна суть в том что при кастомном пути неймспейсы не работают как следует, в том и вопрос
paulwinex
https://github.com/pyQode/pyqode.cobol/blob/master/pyqode/__init__.py вот тут основная фича, делается неймспейс. Но щас советуют делать иначе по официальным мануалам. Хотя суть не меняется
paulwinex
так же делают модмодули для zope
paulwinex
https://pypi.org/project/zope.interface/ https://pypi.org/project/zope.component/
Tishka17
Просто нужно было вызвать метод динамично
1. Не надо гвоздями прибивать структуру кода к структуре апи 2. Не надо то что пришло снаружи юзать во всяких импортах и гетаттрах.
paulwinex
Хорошо, с неймспейсами понял, был неправ. А зачем кастомный путь инсталляции?
по факту эти репозитории не совсем обычные пайтон пакеты, это модули или плагины для моего движка и я их храню отдельно внутри локализованного воркспейса. Это чтото типа виртуалэнва но на следующем уровне, внутри питонского
paulwinex
внутри одноно питонского виртуалэнва я могу переключаться на разные наборы плагинов\модулей
Tishka17
Ух, окей
Tishka17
Тогда нет идей, кроме как предложить тебе в сорцах pkgutil посмотреть
Tishka17
Может реально баг просто
paulwinex
не я костыльний способ придумал уже, плюс там всё равно надо подчищать dist-info
Tishka17
paulwinex
в целом ничего не случится и даже будет работать если я поставлю всё в side-packages, но выглядеть будет всё коряво и воркспейсы не попереключаешь.
Nikolay
Питонские репозитории?
Причем тут Путин?
Tishka17
а что там искать? это задача pip я думаю
Я честно плохо представляю кто конкретно реально выполняет установку пакета
Bekbolot
Да
запрос
Bekbolot
ответ (ошибка)
Bekbolot
Traceback (most recent call last): File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request rv = self.dispatch_request() File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/tabekg/Desktop/VVProject/run.py", line 13, in index response = call(path, name, version, data) File "/Users/tabekg/Desktop/VVProject/app/services.py", line 3, in call return m(data) File "/Users/tabekg/Desktop/VVProject/apis/v1/user.py", line 11, in register if User.query.filter_by(phone=data['phone']).first(): AttributeError: type object 'User' has no attribute 'query' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__ return self.wsgi_app(environ, start_response) File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 2295, in wsgi_app response = self.handle_exception(e) File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 1741, in handle_exception reraise(exc_type, exc_value, tb) File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise raise value File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_app response = self.full_dispatch_request() File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/tabekg/Desktop/VVProject/env/lib/python3.7/site-packages/flask_api/app.py", line 96, in handle_user_exception app_handlers = self.error_handler_spec[None].get(None, ()) KeyError: None
Kel0
Люди можете кинуть источник про работу Телеграм бота с бд? толкоо не на гуглил
Aragaer
телеграм боты работают с бд как-то по-особому?
Туночка️
тебе пойдет думаю
Туночка️
std::mpa 🇺🇦
Мемкеш
Туночка️
txt выглдяит не круто
Туночка️
а воще да на расширение поебать как бы
paulwinex
телеграм боты работают с бд как-то по-особому?
я юзаю peewee когда случай достаточно прост
paulwinex
обертка для sqlite
paulwinex
ну в целом там разные бд прикрутить можно но по дефолту помоему sqlite
Egor
так и слышу как орет: бака бака...!!!
Gennady
телеграм боты работают с бд как-то по-особому?
Бывает и такое... Как пример хранение информации прямо в посте, ссылке, картинке загруженных на сервера телеграм. :) ну, скажем не та бд, к которой все привыкли и всё же..
âDêšwu öBipci
Щас бы скулайт в проде юзать.
Aragaer
какая не та?
Aragaer
не вижу никаких отличий
Aragaer
посты, ссылки и картинки это просто файлы и текстовые строки, ничем не отличается от любого другого сервиса
paulwinex
Щас бы скулайт в проде юзать.
повторю, для простых случаев без нагрузки на бд, типа личное пользование или когда для компании.
âDêšwu öBipci
Нет, все же в ботах бд как правило юзается особым образом - криво. Потому что пишут их жопоруки в основном.
Aragaer
а, ок
Rusk
ребят всем привет, может кто подскажет или направит на мысль. Необходимо скачать файл с сайта через cURL из cmd, но сайт за cloudflare и из-за этого по домену не может к нему подключиться....по IP все работает...в интернете решения не могу найти