• Как в Gino достать из базы все строки, у которых id совпадает с одним из значений в списке с использованием async for?

    @toddbarry Автор вопроса
    Обнаружил метод Table.id.in_(spisok)
    Все работает хорошо. Поэтому вопрос теперь сводится только к этому
    В целом мне необходимо доставать из таблицы все значения столбца ids в тех строках, в которых id совпадает с одним из значений списка spisok, затем формировать из полученных значений ids новый список и повторять операцию для него.
    Если бы как-то можно было попросить базу одним запросом проделать подобные итерации - это было бы наилучшим выходом в моей ситуации, однако не получается найти подобных примеров.


    И прошу оценки использования Table.id.in_(spisok) - это хороший подход?
    Ответ написан
    Комментировать
  • Существуют ли библиотеки, позволяющие реализовать совместное редактирование статей на сервисе?

    @toddbarry Автор вопроса
    Если кому-то будет интересно - в дополнение к ответу DevMan нашёл поддержку OT синхронизации на бекенде, реализованную на python. https://github.com/kingdion/wordsmiths

    В примере по ссылке на клиенте используется выбранный мной html редактор Quill, использующий Delta с поддержкой Operational Transformations. Очень гибкий и удобный. Для реализации вебсокетов используют библиотеку socketio (по случайности так совпало, что ее-то я и использую). Бекенд написан на Flask, в то время как я использую aiohttp, но переписать всё под aiohttp не должно вызвать затруднений
    Ответ написан
    Комментировать
  • Где кроется ошибка в работе с gino?

    @toddbarry Автор вопроса
    Проблема была в том, что GinoEngine нужно инициализировать только один раз. А в моём коде выше когда пользователь подключается к вьюхе, каждый раз инициализируется подключение к GinoEngine и каждый раз затем закрывается при использовании инструкции with, по этой причине удавалось провести только одно подключение к базе для одного клиента из двух одновременно подключающихся.

    Решением стало изменение кода app.py:
    Теперь подключение к движку происходит только здесь
    app = web.Application(middlewares=[db]) #Инициализируем приложение
    app.add_routes(routes) #Добавление роутов в маршрутизатор
    app['config'] = {'dsn': 'postgresql://mac@localhost/mydb'}
    db.init_app(app)
    app.router.add_static('/static', 'static') #Добавление директории со статическими файлами в маршрутизатор


    А обращение к базе данных в view.py теперь следующее
    @routes.get('/')
    async def index(request):
    	await asyncio.sleep(1.5)
    	await User.create(name='jack', fullname='Jack Jones')
    	print(await User.query.gino.all())
    	with open('app.html') as f:
    		return web.Response(text=f.read(), content_type='text/html')


    При этом вместо from gino import Gino я теперь использую импорт from gino.ext.aiohttp import Gino

    Подробнее здесь https://github.com/fantix/gino/issues/295#issuecom...
    Ответ написан