Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ambil hasil kueri sebagai dict di SQLAlchemy

Jawaban yang diperbarui untuk SQLAlchemy 1.4:

Versi 1.4 tidak lagi menggunakan engine.execute() . yang lama pola dan mengubah cara .execute() beroperasi secara internal. .execute() sekarang mengembalikan CursorResult objek dengan .mappings() metode:

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'}]
    """

(Jawaban sebelumnya untuk SQLAlchemy 1.3)

SQLAlchemy sudah melakukan ini untuk Anda jika Anda menggunakan engine.execute bukannya raw_connection() . Dengan engine.execute , fetchone akan mengembalikan Row SQLAlchemy objek dan fetchone akan mengembalikan list dari Row objek. Row objek dapat diakses dengan kunci, seperti 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

Jika Anda membutuhkan dict true yang benar objek maka Anda bisa mengonversinya:

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. SQL / MySQL - Urutan Berdasarkan Panjang Kolom

  2. ckfinder php 2.6.2 pengaturan tampilan, tampilan, penyortiran tidak berfungsi

  3. Membuat umpan dari beberapa model rel, secara efisien?

  4. Baris MySQL 30153 dipotong oleh kesalahan GROUP_CONCAT()

  5. Aneh di mana-mana