Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.31 KB | None | 0 0
  1.  async def _get_rfids(self, query, *args) -> Sequence[RFID]:
  2.                 async with self._pg.cursor() as cursor:
  3.                         await cursor.execute(query, args) # выполняем запрос (postgres код из query, который нам передется)
  4.                         result = await cursor.fetchall() # получаем результат от базы данных (в нашем случае методы на лайне 4 и 5 объеденяются в одну строку)
  5.                                                          # То есть в пиви нужно просто вызвать метод и он что-то вернет
  6.                                                          # а в случае прямой работы нужно сделать запрос, а потом ручками запрос на получение данных
  7.                         if not result: # Если результат пустой -- вернем ничего
  8.                                 return tuple()
  9.  
  10.                         def get_rfid(res): # Этот метод просто распаршивает данные в словарь rfid_data
  11.                                 fields = map(attrgetter('name'), cursor.description) # cursor.description['name'] -- название колоннок в таблице
  12.                                 rfid_data = dict(zip(fields, res)) # -- теперь мы создаем dict, в котором ключ -- название колонки в таблице БД,
  13.                                                                    # а значение -- значение взятое из БД (для текущего res)
  14.                                 coalesce_int(rfid_data, 'external_apt_id') # -- это какая-то хуйня, которая делает что-то с аргументом (приводит в нормальный вид мб)
  15.                                 coalesce_int(rfid_data, 'external_rfid_id') # -- аналогично предидущей строке
  16.                                 return RFID(**rfid_data) # -- вернуть объект класса RFID, инициализируя его из полученного dict rfid_data
  17.                         return tuple(map(get_rfid, result)) # вот тут мы применяем метод get_rfid к каждому объекту tuple result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement