2013-07-18 28 views
6

Tôi muốn có kết quả truy vấn của tôi chuyển đổi sang một danh sách các dicts như thế này:chuyển đổi truy vấn SQLAlchemy dẫn tới một danh sách các dicts

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

Nhưng thay vào đó tôi nhận được nó như là một dict, do đó với các phím lặp đi lặp lại :

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

tôi nhận được kết quả này bằng cách làm này:

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

làm thế nào tôi có thể chuyển đổi kết quả truy vấn SQLAlchemy vào một danh sách o f dicts (mỗi hàng sẽ là một dict)?

Trợ giúp xin vui lòng

Trả lời

9

Hãy thử

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

Bên cạnh loại bạnresult_dict trước for vòng lặp? Hành vi của nó khá lạ lùng.

1

Không có .all()

Bạn có thể thử:

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

nó phụ thuộc vào nếu bạn đang sử dụng ORM hay không (OP không rõ). '.all()' là một 'fetchall()' proxy cho các truy vấn ORM. – cowbert

1

này bây giờ

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

làm việc Nguyên nhân là do u không phải là thực sự là một tuple nhưng một KeyedTuple.

Câu trả lời chính xác về thread này cũng sẽ rất hữu ích

Các vấn đề liên quan