sql >> Databáze >  >> RDS >> Mysql

Načtěte výsledky dotazu podle pokynů v SQLAlchemy

Aktualizovaná odpověď pro SQLAlchemy 1.4:

Verze 1.4 zastarala staré engine.execute() vzor a změnil způsob .execute() působí interně. .execute() nyní vrací CursorResult objekt s .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'}]
    """

(Předchozí odpověď pro SQLAlchemy 1.3)

SQLAlchemy to již dělá za vás, pokud používáte engine.execute místo raw_connection() . Pomocí engine.execute , fetchone vrátí SQLAlchemy Row objekt a fetchall vrátí list z Row objektů. Row k objektům lze přistupovat pomocí klíče, stejně jako 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

Pokud potřebujete skutečný dict objekt, pak jej můžete jednoduše převést:

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


  1. vyžaduje každé volání mysql_real_escape_string další cestu do databáze?

  2. Tlačítko Like PHP/MySQL

  3. MySQL - Perl:Jak získat pole PSČ v rámci předložených x mil od předloženého PSČ v příkladu Perlu

  4. Jak převést řetězec na číselnou hodnotu v PostgreSQL