Klasa jako parametr funkcji w Pythonie do pobrania rzeczy z bazy danych.

0

Hej wszystkim,Używam Python + flask + sqlalchemy. Mam kilka query do bazy danych i z uwagi na to ,że identycznie pobierają dane tylko z różnych kolumn i tabeli stwierdziłem ,że napiszę sobie funkcje i wydzielę i potem będę ją wywoływał. Nie wiem jak przekazać klasę jako parametr. A może źle kombinuję i powinienem to zrobić inaczej?

To jest moja funkcja.

def query_database(list, model_class, column_name):
    list = []

    query = model_class.query.order_by(asc(model_class.id))
    for each in query:
        list.append(each.column_name)
    return list

Kod ,który normalnie wykonuje kwerendę.

available_harness = []
    all_harness = all_harness.query.order_by(asc(all_harness.id))
    for harness in all_harness:
        available_harness.append(harness.HarnessName)

Klasa db.Model

class all_harness(db.Model):
    __tablename__ = "Public.all_harness"
    id = db.Column(db.Integer, primary_key=True)
    HarnessName = db.Column(db.Integer)
    HarnessContent = db.Column(db.String)

Chciałbym móc wywołać funkcję na zasadzie query_database(nazwa listy ktora ma byc zwrocona, klasa z pliku model.py, i kolumna z ,której pobieram pliki)
Może da się to zrobić jakoś prościej? Prosiłbym o pokierowanie ewentualnie co muszę przeczytać dowiedzieć się żeby wiedzieć jak to zrobić.

0

OK, a jak i od jakich elementów, wywołujesz funkcję query_database, i jaki jest błąd?

0

Próbowałem wywołać query_database(available_harness, all_harness, HarnessName)
Błąd ,który mi wyskakiwał to : AttributeError: 'str' object has no attribute 'query'
Wydaje mi się ,że przekazuje stringa o nazwie HarnessName a nie ten HarnessName z klasy all_harness.

0

Pokaż cały kod, bo kompilator mówi, że parametr formalny all_harness jest stringiem, a nie klasą. Przykład:

class Foo:
    pass

def f(type_name):
    return type_name.__dict__

print(Foo.__dict__ == f(Foo))  # -> True

1 użytkowników online, w tym zalogowanych: 0, gości: 1