Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz wyniki zapytania jako dykt w SQLAlchemy

Zaktualizowana odpowiedź dla SQLAlchemy 1.4:

Wersja 1.4 wycofała starą engine.execute() wzorzec i zmienił sposób, w jaki .execute() działa wewnętrznie. .execute() teraz zwraca CursorResult obiekt z .mappings() metoda:

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

(Poprzednia odpowiedź dla SQLAlchemy 1.3)

SQLAlchemy robi to już za Ciebie, jeśli używasz engine.execute zamiast raw_connection() . Z engine.execute , fetchone zwróci Row SQLAlchemy obiekt i fetchone zwróci list z Row przedmioty. Row do obiektów można uzyskać dostęp za pomocą klawisza, tak jak 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

Jeśli potrzebujesz prawdziwego dict obiekt, możesz go po prostu przekonwertować:

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. Próba zrozumienia Nie można znaleźć indeksu FULLTEXT pasującego do błędu listy kolumn

  2. Uzyskaj drugą najwyższą wartość w tabeli MySQL

  3. Przepisywanie mysql select w celu skrócenia czasu i zapisywania tmp na dysk

  4. Jak pobrać dane z bazy danych za pomocą usług internetowych (JAX - RS) w eclipse za pomocą Javy?

  5. Używanie wyzwalacza aktualizacji do aktualizacji innej tabeli