Chcę rzucić kilka kolumn, a następnie wybrać wszystkie inne

id, name, property, description = column("id"), column("name"), column("property"), column("description")

select([cast(id, String).label('id'), cast(property, String).label('property'), name, description]).select_from(events_table)

Czy istnieje sposób na rzutowanie niektórych kolumn i zaznaczanie wszystkich bez wymieniania wszystkich nazw kolumn

Próbowałem

select([cast(id, String).label('id'), cast(property, String).label('property')], '*').select_from(events_table)

py_.transform(return_obj, lambda acc, element: acc.append(dict(element)), [])

Ale otrzymuję dwie dodatkowe kolumny (łącznie 7 kolumn), które są rzutowane i nie mogę ich przekonwertować na słownik, który zgłasza błąd klucza.

Używam FASTAPI, sqlalchemy i baz danych (async)

Dzięki

0
Yogesh 20 grudzień 2019, 13:46

1 odpowiedź

Najlepsza odpowiedź

Jestem pewien, że możesz to zrobić

select_columns = []
for field in events_table.keys()
    select_columns.append(getattr(events_table.c, field))

select(select_columns).select_from(events_table)

Aby wybrać wszystkie pola z tej tabeli. Możesz także zachować listę pól, które chcesz faktycznie wybrać zamiast events_table.keys (), jak

select_these = ["id", "name", "property", "description"]
select_columns = []
for field in select_these
    select_columns.append(getattr(events_table.c, field))

select(select_columns).select_from(events_table)
0
c8999c 3f964f64 20 grudzień 2019, 11:57