2013-07-18 2 views
6

Я хочу, чтобы иметь результат моего запроса преобразуется в список dicts, как это:новообращенный SQLAlchemy запрос приведет к списку dicts

result_dict = [{'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic'}, {'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'}] 

Но вместо этого я получаю это как Dict, таким образом, с повторяющимися ключами :

result_dict = {'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic', 'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'} 

Я получаю этот результат, делая это:

for u in my_query.all(): 
    result_dict = u.__dict__ 

Как я могу преобразовать результат запроса SQLAlchemy в список О f dicts (каждая строка будет dict)?

Помогите пожалуйста

ответ

9

Попробуйте

result_dict = [u.__dict__ for u in my_query.all()] 

Кроме того, какой тип вашresult_dict перед for цикла? Это поведение довольно странно.

1

Там нет .all()

Вы можете попробовать:

result_dict = [u.__dict__ for u in my_query.fetchall()] 
+0

это зависит от того, если вы используете ORM или нет (ОП не уточнил). '.all()' является 'fetchall()' прокси для запросов ORM. – cowbert

1

Это теперь работает

result_dict = [u._asdict() for u in my_query.all()] 

Причина заключается в том, что и на самом деле не является кортежем, но KeyedTuple.

Правильный ответ на этот thread также будет полезно

Смежные вопросы