Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lấy kết quả truy vấn dưới dạng dict trong SQLAlchemy

Câu trả lời được cập nhật cho SQLAlchemy 1.4:

Phiên bản 1.4 đã ngừng sử dụng engine.execute() cũ và thay đổi cách .execute() hoạt động trong nội bộ. .execute() bây giờ trả về một CursorResult đối tượng có .mappings () phương pháp:

import sqlalchemy as sa

# …

with engine.begin() as conn:
    qry = sa.text("SELECT FirstName, LastName FROM clients WHERE ID < 3")
    resultset = conn.execute(qry)
    results_as_dict = resultset.mappings().all()
    pprint(results_as_dict)
    """
    [{'FirstName': 'Gord', 'LastName': 'Thompson'}, 
     {'FirstName': 'Bob', 'LastName': 'Loblaw'}]
    """

(Câu trả lời trước cho SQLAlchemy 1.3)

SQLAlchemy đã thực hiện việc này cho bạn nếu bạn sử dụng engine.execute thay vì raw_connection() . Với engine.execute , fetchone sẽ trả về một Row của SQLAlchemy đối tượng và fetchall sẽ trả về một list của Row các đối tượng. Row các đối tượng có thể được truy cập bằng khóa, giống như dict :

sql = "SELECT FirstName, LastName FROM clients WHERE ID = 1"
result = engine.execute(sql).fetchone()
print(type(result))  # <class 'sqlalchemy.engine.result.Row'>
print(result['FirstName'])  # Gord

Nếu bạn cần một dict đúng thì bạn chỉ có thể chuyển đổi nó:

my_dict = dict(result)
print(my_dict)  # {'FirstName': 'Gord', 'LastName': 'Thompson'}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn khoảng thời gian tiếp theo

  2. Lấy hình ảnh từ Cơ sở dữ liệu MySQL - C #

  3. SQL - Tìm ngày gần nhất với ngày hiện tại

  4. Truy vấn Mysql trả về id tài nguyên # 8 thay vì giá trị mong muốn

  5. PHP / MySQL - BEGIN ... CAM KẾT Không hoạt động