Возвращен вложенный список из сопрограмм выдан - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь переписать свой код, чтобы сделать его асинхронным, для часто операций ввода / вывода (запросы MySQL) я использую библиотеку aiomysql. Чтобы предотвратить в будущем исключения key error и т. Д., Я преобразовываю словарь в объект, устанавливая ключи и значения в качестве атрибутов. Но я столкнулся с проблемой, когда сопрограмма возвращает список в объекте списка [[]], а не просто объект списка.

  • создание генератора из списка в функции не работает, я получаю исключения

Вывод в функции с print()

[<sqlobject.SQLObject object at 0x7f75a52476a0>, 
<sqlobject.SQLObject object at 0x7f75a5247668>, 
<sqlobject.SQLObject object at 0x7f75a52476d8]

Вывод вне сопрограммы после понимания списка

[[<sqlobject.SQLObject object at 0x7f75a52476a0>, 
<sqlobject.SQLObject object at 0x7f75a5247668>, 
<sqlobject.SQLObject object at 0x7f75a52476d8>
]]
# Dict to class converter
@asyncio.coroutine
    def selectall(self, loop, stmt, *args):
        try:
            with (yield from self.pool) as conn:
                cursor = yield from conn.cursor(aiomysql.DictCursor)
                yield from cursor.execute(stmt, *args)
                rows = yield from cursor.fetchall()
                new_items = [SQLObject(x) for x in rows]
                results = yield from new_items
                return results
        except:
            raise

# Result in loop executioner
result = loop.run_until_complete(
        asyncio.gather(pool_obj.selectall(loop, stmt)))
...