Mysql
 sql >> база данни >  >> RDS >> Mysql

Извличане на резултатите от заявката като dict в SQLAlchemy

Актуализиран отговор за SQLAlchemy 1.4:

Версия 1.4 оттегли стария engine.execute() шаблон и промени начина на .execute() действа вътрешно. .execute() сега връща CursorResult обект с .mappings() метод:

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

(Предишен отговор за SQLAlchemy 1.3)

SQLAlchemy вече прави това вместо вас, ако използвате engine.execute вместо raw_connection() . С engine.execute , fetchone ще върне SQLAlchemy Row обект и fetchone ще върне list на Row обекти. Row обектите могат да бъдат достъпни с ключ, точно като 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

Ако имате нужда от истински dict обект, тогава можете просто да го конвертирате:

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. Повторно подчиняване на сринат MySQL главен сървър в настройка на полусинхронна репликация

  2. java Хибернация на ненужните заявки към обособени обекти

  3. При дублиран ключ актуализирайте само нулеви или празни стойности

  4. Извличане на единичен ред от таблица за присъединяване

  5. Rails + MySQL на Mavericks - Библиотеката не е заредена:libmysqlclient.18.dylib