SQLAlchemy конвертирует результат запроса SELECT в список dicts

Когда я использовал session.query, мне удалось преобразовать результат в список dicts:

my_query = session.query(table1,table2).filter(all_filters) result_dict = [u.__dict__ for u in my_query.all()] 

Но теперь, когда мне нужно работать с операцией SELECT() , как я могу преобразовать результаты в dict, который выглядит так, для каждого результата строки:

[{'Row1column1Name' : 'Row1olumn1Value', 'Row1column2Name' :'Row1Column2Value'},{'Row2column1Name' : 'Row2olumn1Value', 'Row2column2Name' : 'Row2Column2Value'},etc....] .

Это мой код SELECT ():

 select = select([table1,table2]).where(all_filters) res = conn.execute(select) row = res.fetchone() #I have to use fetchone() because the query returns lots of rows resultset=[] while row is not None: row = res.fetchone() resultset.append(row) print resultset 

Результат:

 [('value1', 'value2', 'value3', 'value4'),(.....),etc for each row] 

Я новичок в Python, любая помощь будет оценена.

3 Solutions collect form web for “SQLAlchemy конвертирует результат запроса SELECT в список dicts”

Кажется, это объект RowProxy. Пытаться:

 row = dict(zip(row.keys(), row)) 

Вы можете вывести каждую строку из выбранного результата в виде либо dict, либо кортежа. То, что вы видели, – это поведение по умолчанию, которое должно представлять каждую строку как кортеж. Чтобы привести тип к типу, измените свой код следующим образом:

 select = select([table1, table2]).where(all_filters) res = conn.execute(select) resultset = [] for row in res: resultset.append(dict(row)) print resultset 

Это работает хорошо, если вам нужно обрабатывать результат по одной строке за раз.

Если вы с удовольствием поместите все строки в список за один раз, понимание списка немного опрятно:

 select = select([table1, table2]).where(all_filters) res = conn.execute(select) resultset = [dict(row) for row in res] print resultset 

Для первого запроса лучше использовать этот подход для sqlalchemy KeyedTuple:

 # Convert an instance of `sqlalchemy.util._collections.KeyedTuple` # to a dictionary my_query = session.query(table1,table2).filter(all_filters) result_dict = map(lambda q: q._asdict(), my_query) 

ИЛИ

 result_dict = map(lambda obj: dict(zip(obj.keys(), obj)), my_query) 

Для ResultProxy, как упоминалось ранее:

 result_dict = dict(zip(row.keys(), row)) 
  • Как использовать колбу-sqlalchemy с существующей моделью sqlalchemy?
  • Пирамида / SQL Алхимия DetachedInstanceError
  • Циркулярный импорт модели SQLAlchemy
  • SQLalchemy указывает, какой индекс использовать
  • Поле Integer не автоинкремент в SQLAlchemy
  • динамическое сопоставление sqlalchemy
  • Простое обновление в sqlalchemy
  • первичный ключ sqlalchemy без автоматического увеличения
  •  
    Interesting Posts for Van-Lav

    Получение исключений, когда исключение уже присутствует в Python 3

    Ошибка сегментации 11, хэш-код python со списками, хеширование 1 миллиона объектов

    Прочтите файл kml с несколькими метками в pykml

    Извлечь данные из JSON API с помощью Python

    Python: отключить http_proxy в urllib2

    Почему у меня нет xlrd?

    Как указать имя схемы во время запуска «syncdb» в django?

    Переименование загруженных изображений в Scrapy 0.24 с содержимым из поля элемента, избегая конфликтов имен файлов?

    Как я могу избавиться от значений None в словаре?

    str.format (list) с отрицательным индексом не работает в Python

    Project Euler # 3 с python – САМЫЙ ЭФФЕКТИВНЫЙ МЕТОД

    Django задает параметры конфиденциальности для каждой модели

    Как переформатировать блок данных с различными функциями, применяемыми к каждому столбцу?

    сценарий fruityloops или причина пропеллера из VB или Python?

    Как я могу сказать PyCharm, какой тип должен быть параметром?

    Python - лучший язык программирования в мире.